1 条题解

  • 1
    @ 2022-10-2 18:06:27
    #include <algorithm>
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    const int MAXN=1001;
    int a[7],w[7]={0,1,2,3,5,10,20},f[MAXN]={};//a数组存放的是每种砝码的数量,w数组是每种砝码的重量,f[i]表示 “重量 i 成立”
    int main()
    {
    	for (int i=1;i<=6;i++)//输入
    	{
    		scanf("%d",&a[i]);
    	}
    	f[0]=1;//初始化!   f [0] 就是不使用任何砝码的情况
    	for (int i=1;i<=6;i++)//枚举六种砝码
    	{
    		for (int j=1;j<=a[i];j++)//枚举每个砝码
    		{
    			for (int k=1000;k>=0;k--)//寻找 已成立的重量
    			{
    			    if (f[k])//若此重量成立
    				{
    					f[k+w[i]]=1;//那么这个重量加上这个未使用的砝码的总重量也成立
    				}
    			}
    		}
    	}
    	int ans=0;
    	for (int i=1;i<=1000;i++)//一遍扫,统计成立的重量。记住从1开始循环,因为不使用砝码的情况在这里不统计
    	{
    		if (f[i]) ans++;
    	}
    	printf("Total=%d",ans);//输出
    	return 0;//华丽丽de结束!
     } 
    
    • 1

    信息

    ID
    1297
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    12
    已通过
    5
    上传者