在C语言中,兑换钞票的程序可以通过不同的方法实现。以下是几种不同的实现方法:
方法一:简单兑换
```c
include define BILL50 50 define BILL20 20 define BILL10 10 int main() { int n, count, i, end; scanf("%d", &n); count = 0; end = n / BILL50; for(i = 0; i <= end; i++) { count += (n - i * BILL50) / BILL20 + 1; } printf("%d\n", count); return 0; } ``` 方法二:考虑所有组合 ```c include define BILL50 50 define BILL20 20 define BILL10 10 int main() { int n, count, i, j, end1, end2; scanf("%d", &n); count = 0; end1 = n / BILL50; for(i = 0; i <= end1; i++) { if(i * BILL50 == n) { count++; continue; } end2 = (n - i * BILL50) / BILL20; for(j = 0; j <= end2; j++) { if(i * BILL50 + j * BILL20 == n) { count++; } } } printf("%d\n", count); return 0; } ``` 方法三:多种兑换方法 ```c include int main() { int a = 1, b = 2, c = 5; int i, j, k; int count = 0; printf("1元,2元,5元张数依次为:\n"); for(i = 1; i <= 100; i++) { for(j = 1; j <= 50; j++) { for(k = 1; k <= 20; k++) { if(((i * a + j * b + k * c) == 100) && (i + j + k == 50)) { printf("%5d,%5d,%5d\n", i, j, k); count++; } } } } printf("共有%d种方案\n", count); return 0; } ``` 方法四:动态规划 ```c include int main() { int coins[] = {1, 2, 5}; int amount = 100; int dp[amount + 1]; for (int i = 0; i <= amount; i++) { dp[i] = amount + 1; } dp = 0; for (int i = 0; i < 3; i++) { for (int j = coins[i]; j <= amount; j++) { for (int k = 0; k <= j / coins[i]; k++) { if (dp[j - k * coins[i]] != amount + 1) { dp[j] = min(dp[j], dp[j - k * coins[i]] + 1); } } } } if (dp[amount] == amount + 1) { printf("无法凑成总金额\n"); } else { printf("最少需要%d枚硬币\n", dp[amount]); } return 0; } ``` 方法五:多种兑换方法(输出多种方法)