完全背包——方案个数 UVA11137 Ingenuous Cubrency

题目描述如下

代码如下:

#include <stdio.h>

unsigned long long int dp[10001] ;

int main (){

  int i,j ,k ;
  int v[22];
  int n ;
  for (i = 1 ; i < 22 ; i ++)
    v[i] = i*i*i ;

   dp [0] = 0 ;
  for ( i = 1 ; i <=21 ; i ++ ){

    for ( j = 0 ; j<10001 ; j ++  ){

          if ( j>=v[i] && i>1 )
       dp[j] = dp[j] + dp[ j -v[i] ];

       if ( i == 1){
        dp[j] = 1;

       }
    }

  }
  while (scanf ("%d",&n)!=EOF){

    printf ("%llu\n" , dp[n]);

  }

 return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 20:52:19

完全背包——方案个数 UVA11137 Ingenuous Cubrency的相关文章

UVA11137 Ingenuous Cubrency

题意 PDF 分析 考虑dp. 用\(d(i,j)\)表示用不超过i的立方凑成j的方案数. \(d(i,j)=d(i-1,j)+d(i,j-i^3)\) 时间复杂度\(O(IN+T)\) 代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<set> #include<map> #include<queue> #i

uva 11137 Ingenuous Cubrency (完全背包)

uva 11137 Ingenuous Cubrency People in Cubeland use cubic coins. Not only the unit of currency is called a cube but also the coins are shaped like cubes and their values are cubes. Coins with values of all cubic numbers up to 9261 (= 21 3), i.e., coi

HDU 1284 钱币兑换问题 (动态规划 背包方案数)

钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15134    Accepted Submission(s): 9117 Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Outp

UVa 11137 (完全背包方案数) Ingenuous Cubrency

题意:用13.23……k3这些数加起来组成n,输出总方案数 d(i, j)表示前i个数构成j的方案数则有 d(i, j) = d(i-1, j) + d(i, j - i3) 可以像01背包那样用滚动数组来实现 1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 10; 8

UVA - 11137 Ingenuous Cubrency[背包DP]

People in Cubeland use cubic coins. Not only the unit of currency iscalled a cube but also the coins are shaped like cubes and their valuesare cubes. Coins with values of all cubic numbers up to 9261(= 213),i.e., coins with the denominations of 1, 8,

背包方案

对于一个给定了背包容量.物品费用.物品间相互关系(分组.依赖等)的背包问题, 除了再给定每个物品的价值后求可得到的最大价值外,还可以得到装满背包或将背包装至某一指定容量的方案总数. 对于这类改变问法的问题,一般只需将状态转移方程中的max改成sum即可. 例如若每件物品均是01背包中的物品, 转移方程即为f[i][v]=sum{f[i-1][v],f[i-1][v-w[i]]+c[i]},初始条件f[0][0]=1. [例8].货币系统 [问题描述] 给你一个n种面值的货币系统,求组成面值为m的

完美世界第一题:成功放入背包物品个数

#include <iostream> #include <vector> using namespace std; /************************************************************************/ /* 给定物品个数M,背包个数N,每个背包容量k,依次输入物品的重量 当物品放不下背包时,如果还有背包则放入下一背包,如果没有,直接扔掉. 当下一背包中放入物品后,该背包封口即不可再放物品. 用例输入: 5 5 2 4

背包方案问题

博客园 首页 新随笔 联系 订阅 管理 随笔 - 766  文章 - 1  评论 - 107 八.背包问题方案总数 对于一个给定了背包容量.物品费用.物品间相互关系(分组.依赖等)的背包问题,除了再给定每个物品的价值后求可得到的最大价值外,还可以得到装满背包或将背包装至某一指定容量的方案总数. 对于这类改变问法的问题,一般只需将状态转移方程中的max改成sum即可.例如若每件物品均是01背包中的物品,转移方程即为f[i][v]=sum{f[i-1][v],f[i-1][v-w[i]]+c[i]}

01背包方案数(变种题)Stone game--The Preliminary Contest for ICPC Asia Shanghai 2019

题意:https://nanti.jisuanke.com/t/41420 给你n个石子的重量,要求满足(Sum<=2*sum<=Sum+min)的方案数,min是你手里的最小值. 思路: 从最大重量的石子开始背包,每次ans+=dp[j-v[i]]就行了. 1 #define IOS ios_base::sync_with_stdio(0); cin.tie(0); 2 #include <cstdio>//sprintf islower isupper 3 #include &