poj 1837 01背包

来源:互联网 发布:苹果手机恢复数据在哪 编辑:程序博客网 时间:2024/06/06 07:37

题意:

g个砝码,c个挂物点。问多少种情况能让天平平衡。

dp以平衡度入手。。


#include<string.h>#include<stdio.h>int dp[30][20000],c,g;int ci[100],gi[100];int main(){while(scanf("%d%d",&c,&g)!=EOF){for(int i=1;i<=c;i++){scanf("%d",&ci[i]);}for(int i=1;i<=g;i++){scanf("%d",&gi[i]);}memset(dp,0,sizeof(dp));dp[0][7500]=1;for(int i=1;i<=g;i++){for(int j=0;j<=2*7500;j++){for(int k=1;k<=c;k++){dp[i][j]+=dp[i-1][j-ci[k]*gi[i]];//到达j状态平衡时,是我不加第i个物品时,j-ci*gi的个数}}}printf("%d\n",dp[g][7500]);}return 0;}