P2347 砝码称重
题目描述
设有1g1g、2g2g、3g3g、5g5g、10g10g、20g20g的砝码各若干枚(其总重\le 1000≤1000),
输入输出格式
输入格式:
输入方式:a_1 , a_2 ,a_3 , a_4 , a_5 ,a_6a1,a2,a3,a4,a5,a6
(表示1g1g砝码有a_1a1个,2g2g砝码有a_2a2个,…,20g20g砝码有a_6a6个)
输出格式:
输出方式:Total=NTotal=N
(NN表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
输入输出样例
输入样例#1: 复制
1 1 0 0 0 0
输出样例#1: 复制
Total=3
#include<bits/stdc++.h> using namespace std; bool f[1001]; int c[7],w[7]={0,1,2,3,5,10,20}; int main(){ for(int i=1;i<=6;i++) scanf("%d",&c[i]); memset(f,0,sizeof(f)); f[0]=1; for(int i=1;i<=6;i++) for(int j=1;j<=c[i];j++) for(int k=1000;k>=0;k--){ if(f[k]&&k+w[i]<=1000) f[k+w[i]]=1; } int ans=0; for(int i=1;i<=1000;i++){ if(f[i]) ans++; } printf("Total=%d",ans); }