砝码称重

 

来源:NOIP1996(提高组) 第四题

【问题描述】

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),用他们能称出的重量的种类数。

【输入文件】

a1 a2 a3 a4 a5 a6

(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个,中间有空格)。

【输出文件】

Total=N

(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)。

【输入样例】

1 1 0 0 0 0

【输出样例】

TOTAL=3




 1 #include <stdio.h>
 2 #include <memory.h>
 3 #define MAX 1001
 4 int _tmain(int argc, _TCHAR* argv[])
 5 {
 6     int a[MAX];
 7     int w[] = {1, 2, 3, 5, 10, 20};
 8     memset(a, 0, MAX*sizeof(int));
 9     int num;
10     for (int i = 0; i < 6; i++)
11     {
12         scanf_s("%d", &num);
13         for (int k = 0; k < num; k++)
14         {
15             for (int j = MAX-w[i]; j >= 0; j--)
16             {
17                 if(a[j] > 0)
18                     a[j+w[i]]++;
19             }
20             a[w[i]]++;
21         }
22         
23     }
24     int sum = 0;
25     for(int i = MAX-1; i >= 0; i--){
26         if(a[i] > 0)
27             sum++;
28     }
29     printf("TOTAL=%d\n", sum);
30     return 0;
31 }
View Code

 

posted on 2013-06-14 21:39  冰尨  阅读(252)  评论(0)    收藏  举报

导航