輸入方式:a1 a2 a3 a4 a5 a6
(表示1g砝碼有a1個,2g砝碼有a2個,......20g砝碼有a6個)
輸出方式:Total=N
(N表示用這些砝碼能稱出的不同重量的個數,但不包括壹個砝碼也不用的情況)
如:輸入:1 1 0 0 0 0
輸出:Total=3 表示可以稱出1g,2g,3g三種不同的重量。
#include <stdio.h>
int main( )
{
int a[ 6 ], m[ 6 ], total = 0, i, j, k, f[ 1001 ];
for ( i = 0; i <= 1000; i++ )
f[ i ] = 0;
f[ 0 ] = 1;
m[ 0 ] = 1; m[ 1 ] = 2; m[ 2 ] = 3; m[ 3 ] = 5; m[ 4 ] = 10; m[ 5 ] = 20;
for ( i = 0; i < 6; i++ )
scanf("%d", &a[ i ]);
for ( i = 0; i < 6; i++ )
{
for ( j = 0; j < a[ i ]; j++ )
{
for ( k = 1000; k >= m[ i ]; k-- )
if ( f[ k - m[ i ] ] && !f[ k ] )
{
f[ k ] = 1;
total++;
}
}
}
printf("Total=%d\n", total);
return 0;
}