MOOC北京理工《C語言程式設計(上)》第6周第3題:郵票組合
阿新 • • 發佈:2019-01-01
題目內容:
我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過這些小面值郵票中的一張或幾張的組合,可以滿足不同郵件的不同的郵資。
現在,郵局有4種不同面值的郵票。在每個信封上最多能貼5張郵票,面值可相同,可不同。
輸入格式:
四種郵票的面值。
輸出格式:
用這四種面值組成的郵資最大的從1開始的一個連續的區間。
說明:
如結果為10,則表明使用4張郵票可組合出1、2、3、4、5、6、7、8、9、10這些郵資。
名詞解釋:
郵資:就是你寄東西需要花多少錢。
郵票面額:是由國家發行的具有固定價格的花紙片,被稱為郵票。
如果你寄東西,郵局稱了重量,告訴你要240分。這樣你就要貼郵票了。如果現在郵局的郵票有面值為80分、50分、20分和10分的四種,你就可以採用不同的組合得到240的郵資,例如:採用3張80分的可以湊出240分;或者24張10分的湊起來240分也可以。顯然不同郵票的組合都可以得到同樣一種郵資。
輸入樣例:
1 4 12 21
輸出樣例:
The max is 71.
#include<stdio.h> int main() { int i, j, k, p, a1, a2, a3, a4, m=1, flag; scanf("%d%d%d%d",&a1,&a2,&a3,&a4); A: for( i = 0 ; i <= 5 ; i++ ) { for( j = 0 ; j <= 5 - i ; j++ ) { for( k = 0 ; k <= 5 - i - j ; k++ ) { for( p = 0 ; p <= 5 - i - j - k ; p++ ) { flag = 1 ; if( a1 * p + a2 * k + a3 * j + a4 * i == m ) { flag = 0; m++; goto A; } } } } } if( flag == 1 ) printf("The max is %d.\n",m-1); return 0; }