....这个明显是动态规划
#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;
}