P2347 砝码称重

题目描述

设有1g1g、2g2g、3g3g、5g5g、10g10g、20g20g的砝码各若干枚(其总重\le 10001000),

输入输出格式

输入格式:

 

输入方式: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);
}

 

posted @ 2019-07-03 22:28  Crazily  阅读(270)  评论(0编辑  收藏  举报