當前位置:編程學習大全網 - 編程軟體 - 砝碼稱重問題怎麽用貪心算法解決

砝碼稱重問題怎麽用貪心算法解決

現有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 表示可以稱出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;

}

  • 上一篇:java的正則表達式有什麽作用?
  • 下一篇:小升初---關於收費站經過的車輛各有多少的這道數學題怎麽做?
  • copyright 2024編程學習大全網