题目描述
设有 1g1g、2g2g、3g3g、5g5g、10g10g、20g20g 的砝码各若干枚(其总重≤1000≤1000),可以表示成多少种重量?
输入格式
输入方式:�1,�2,�3,�4,�5,�6a1,a2,a3,a4,a5,a6
(表示 1g1g 砝码有 �1a1 个,2g2g 砝码有 �2a2 个,…,20g20g 砝码有 �6a6 个)
输出格式
输出方式:Total=N
(�N 表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
输入输出样例
输入 #11 1 0 0 0 0输出 #1
Total=3
说明/提示
【题目来源】
NOIP 1996 提高组第四题
题解:复习一下背包问题,为下一题做铺垫 很古老的一道noip题
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<bits/stdc++.h> using namespace std; int b[8],dp[1002]; int ans,sum; int a[8]={0,1,2,3,5,10,20}; int main(){ freopen("2347.in","r",stdin); freopen("2347.out","w",stdout); for(int i=1;i<=6;i++){ scanf("%d",&b[i]); sum+=a[i]*b[i]; } dp[0]=1; for(int i=1;i<=6;i++){ for(int j=sum;j>=0;j--){ for(int k=1;k<=b[i];k++){ if(j-a[i]*k>=0){ if(dp[j-a[i]*k]==1 && dp[j]==0) { ans++; dp[j]=1; } } } } } printf("Total=%d",ans); return 0; }
标签:2347,洛谷,int,砝码,ans,NOIP1996,include,dp From: https://www.cnblogs.com/wuhu-JJJ/p/17787480.html