背包类统计最优解个数问题
代码如下:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; long long sum[50000]; int main() { double d; int w[]={0,5,10,20,50,100,200,500,1000,2000,5000,10000},i,j; memset(sum,0,sizeof(sum)); sum[0]=1; for(j=1;j<=11;j++) for(i=w[j];i<=30000;i++) { sum[i]+=sum[i-w[j]]; } while(scanf("%lf",&d)) { if(d==0.00) break; int v=d*100+0.5; printf("%6.2lf%17lld\n",d,sum[v]); } return 0; }
原文地址:http://blog.csdn.net/acm_lkl/article/details/41980963