poj 1252 动态规划 背包
题意:给定6种币值,使用尽量少的硬币,组成1 2 3 4……100,问平均要多少个,以及最多要多少个?
分析:完全背包
const int M = 1200; int a[7],f[M],tot,ma; void dp(int s){ memset(f,1,sizeof(f)); f[0] = tot = ma = 0; FOE(i, 1, 6) FOE(j, a[i], M) checkmin(f[j], f[ j-a[i] ]+1);//付j FOE(i, 1, 100){ FOE(j, 0, M-i) checkmin(f[i], f[j+i]+f[j]);//付j+i 找j tot += f[i]; checkmax(ma, f[i]); } cout<<fixed<<setprecision(2)<<(double)tot/100<<' '<<ma<<endl; } int main(){ int t; scanf("%d",&t); while(t--){ FOE(i, 1, 6) scanf("%d",&a[i]); dp(100); } return 0; }