7-2 换硬币
將一筆零錢換成5分、2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?
輸入格式:
輸入在一行中給出待換的零錢數額x∈(8,100)。
輸出格式:
要求按5分、2分和1分硬幣的數量依次從大到小的順序,輸出各種換法。每行輸出一種換法,格式為:“fen5:5分硬幣數量, fen2:2分硬幣數量, fen1:1分硬幣數量, total:硬幣總數量”。最后一行輸出“count = 換法個數”。
輸入樣例:
13輸出樣例:
fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen2:3, fen1:2, total:6 fen5:1, fen2:2, fen1:4, total:7 fen5:1, fen2:1, fen1:6, total:8 count = 4代碼長度限制
16 KB
時間限制
400 ms
內存限制
64 MB
#include <stdio.h> int main() {int value;scanf("%d", &value); // value代表硬幣數額int num = 0;//外部循環,從最大數額硬幣開始,因為至少每種一個,所以先減去2分、1分硬幣的數額for (int i = (value - 3) / 5; i >= 1; i--){//同理,這里value-1的含義是要至少保留一個1分硬幣,如果沒有-1,那么2分硬幣可以把剩下的value分完,沒有value留給1分硬幣,不合題意for (int j = (value - 1 - 5 * i) / 2; j >= 1; j--){//i和j在每一次循環中都與value關聯,相比于窮舉,減少了循環次數int c = value - 5 * i - 2 * j;int count = i + j + c;printf("fen5:%d, fen2:%d, fen1:%d, value:%d\n", i, j, c, count);num++;}}printf("count = %d", num);return 0; }思路來自:(42條消息) 實驗4-2-3 換硬幣 (20 分)_老陳還能肝的博客-CSDN博客
總結
- 上一篇: CNKI破解方法
- 下一篇: 《工厂订单出入库信息管理系统》模块5 -