dp 神奇的口袋
来源:互联网 发布:php redis 消息队列 编辑:程序博客网 时间:2024/04/29 11:49
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一 些物品,这些物品的总体积必须是40。 John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2……an。John可以从这些物品中选择一 些,如果选出的物体的总体积是40,那么利用这个神奇的口 袋,John就可以得到这些物品。现在的问题是,John有多少 种不同的选择物品的方式。
输入 输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的 数目。接下来的n行,每行有一个1到40之间的正整数,分别 给出a1,a2……an的值。 输出 输出不同的选择物品的方式的数目。 输入样例 3 20 20 20 输出样例 3
////动规#include <iostream>#include<string.h>using namespace std;int a[30];int N;int Ways[40][30];//Ways[i][j]数组表示从前j种物品里凑出体积i的方法数int main(){ cin >> N; memset(Ways,0,sizeof(Ways)); for( int i = 1; i <= N; ++ i ) { cin >> a[i]; Ways[0][i] = 1;//Ways[0][i]存储的是正好能整减的数据标记为1 } Ways[0][0] = 1;//标记输入的第一个数符合情况为1 for( int w = 1 ; w <= 40; ++ w ) { for( int k = 1; k <= N; ++ k ) { Ways[w][k] = Ways[w][k-1];//在找到符合条件的数据之前,Ways内的数都是0 if( w-a[k] >= 0) Ways[w][k] += Ways[w-a[k]][k-1];//根据ways标记的进行加一 } } cout << Ways[40][N]; return 0;}//"我为人人"型递推解法 //#include <iostream>//using namespace std;//#define MAX 41//int main()//{// int n,i,j,input;// int sum[MAX];// for(i=0; i<MAX; i++) sum[i]=0;// cin >> n;// for(i=0; i<n; i++)// {// cin >> input;// for(j=40; j>=1; j--)// if(sum[j]>0 && j+input <= 40)// sum[j+input] += sum[j];////如果j有sum[j]种方式可达,则每种方式加上input就可达 j + input// sum[input]++;// }// cout << sum[40] << endl;// return 0;//}////递归//#include <iostream>//using namespace std;//int a[30];//int N;//int Ways(int v,int n )//{// // 从前n种物品中选择一些,凑成体积v的做法数目// if( v == 0 ) return 1;// if( n <= 0 ) return 0;// return Ways(v, n-1 ) + Ways(v-a[n], n-1 );//}//int main()//{// cin >> N;// for( int i = 1; i <= N; ++ i )// cin >> a[i];// cout << Ways(40,N);// return 0;//}
0 0
- dp 神奇的口袋
- 【入门DP】 神奇的口袋
- [DP] OpenJudge 2755 神奇的口袋
- poj 2755 神奇的口袋(dp)
- OJ_1114 神奇的口袋
- OpenJudge_P1757 神奇的口袋
- 1114神奇的口袋
- 神奇的口袋
- 神奇的口袋
- 1757:神奇的口袋
- 神奇的口袋
- openjudge1757:神奇的口袋
- 神奇的口袋
- 神奇的口袋(百练2755) ( DFS + DP )
- 百练 2755 神奇的口袋 dp背包
- 九度OJ 1114:神奇的口袋 (DFS、DP)
- YTU3141--神奇的口袋(dp背包变式)
- 题目1114:神奇的口袋
- 数据结构(一)
- Spring @Scheduled定时任务动态修改cron参数
- bzoj 1303 中位数 题解
- MyBatis的动态语句使用
- 915M无线通讯模块 数传 SI4463 SX1278
- dp 神奇的口袋
- PHP实现给图片加文字水印
- Java 考题
- [BZOJ1059][ZJOI2007]矩阵游戏(二分图匹配)
- 自然语言处理1——求字符的熵
- struts防止表单重复提交
- PHP实现给图片加图片水印
- c语言基础回顾-文件
- 上海求职之路第四天