砝码称重
来源: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 }
浙公网安备 33010602011771号