#13688: 遞迴解法


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
b511. 換銅板 -- 清華 MOOCs 2014 程式設計導論期末考 | From: [223.136.100.196] | 發表日期 : 2018-04-07 20:50

  

#include <cstdio>

int n;
int coins[5];
int counts[5];

void recursion(int money, int index) {
  // 金額已換完
  if (money == 0) {
    putchar('(');
    printf("%d", counts[0]);
    for (int i = 1; i < n; ++i) printf(",%d", counts[i]);

    puts(")");
    return;
  }
  // 換完最後一個面額後,仍然有剩餘金額,表示兌換失敗
  if (index >= n) return;

  // 計算最多可以換到幾個
  int times = money / coins[index];
  // 盡可能讓第一個面額換得最少,從不換開始算
  for (int t = 0; t <= times; ++t) {
    counts[index] = t;
    // 遞迴的部份:在扣掉當前面額之後,剩下的金額給其他的面額換
    recursion(money - coins[index] * t, index + 1);
  }
}

int main() {
  int money;
  while (scanf("%d", &n) != EOF) {
    for (int i = 0; i < n; ++i) scanf("%d", &coins[i]);

    scanf("%d", &money);
    recursion(money, 0);
  }
  return 0;
}

 

 
#13695: Re:遞迴解法


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
b511. 換銅板 -- 清華 MOOCs 2014 程式設計導論期末考 | From: [218.164.210.190] | 發表日期 : 2018-04-08 23:56

補充一題相關的:

d904: 換零錢

 
#13697: Re:遞迴解法


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
b511. 換銅板 -- 清華 MOOCs 2014 程式設計導論期末考 | From: [111.246.62.91] | 發表日期 : 2018-04-09 00:50

補充一題相關的:

d904: 換零錢



別貼答案了,別人還要玩。

 
ZeroJudge Forum