poj1837 01背包类型计数
2015-09-17 11:42
387 查看
//有一个天平,天平左右两边各有若干个钩子,总共有C个钩子,有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数。 // 其中可以把天枰看做一个以x轴0点作为平衡点的横轴 //因为强制用所有的砝码那么与用于不用对应两种状态 //1424K 0MS #include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define MAXN 22 #define MAXL 15005 #define HALFL 7500 static int dp[MAXN][MAXL]; static int C,G; static int CS[MAXN]; static int GX[MAXN]; int main() { scanf("%d %d",&C,&G); for (int i=0;i<C;++i) scanf("%d",&CS[i]); for (int i=0;i<G;++i) scanf("%d",&GX[i]); memset(dp,0,sizeof(dp)); for (int k=0;k<C;++k) { int w = CS[k]*GX[0]; dp[0][w+HALFL] = 1; } for (int i=1;i<G;++i) { for (int j=0;j<MAXL;++j) { if (dp[i-1][j]) for (int k=0;k<C;++k) { int w = GX[i]*CS[k] + j - HALFL; dp[i][w+HALFL] += dp[i-1][j]; } } } printf("%d\n",dp[G-1][HALFL]); return 0; }
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例