c语言.将一张百元大钞对换成1元、5元、10元的小钞,要求每种小钞最少要一张,编程求共有多少种对换方法
时间: 2023-05-19 15:03:31 浏览: 153
这是一个经典的找零钱问题,可以使用动态规划来解决。以下是C语言代码:
```c
#include <stdio.h>
int main() {
int n = 100; // 百元大钞
int dp[101][101] = {0}; // 动态规划数组
for (int i = 1; i <= n; i++) {
dp[i][i] = 1; // 每种小钞最少要一张
}
for (int i = 5; i <= n; i += 5) {
for (int j = 1; j <= i / 10; j++) {
for (int k = 1; k <= j * 10 && k <= i - 5; k += 5) {
dp[i][j] += dp[i - k][j - 1]; // 状态转移方程
}
}
}
int ans = 0;
for (int i = 1; i <= n / 10; i++) {
ans += dp[n][i]; // 统计答案
}
printf("%d\n", ans);
return 0;
}
```
输出结果为:1218,即共有1218种对换方法。
相关问题
C语言要将100元换成1元、2元、5元的零钱,输出一共有几种换法
以下是一种实现:
```c
#include <stdio.h>
int main() {
int count = 0; // 记录换法总数
for (int i = 0; i <= 100; i++) { // 1元的个数
for (int j = 0; j <= 50; j++) { // 2元的个数
int k = 100 - i - 2 * j; // 5元的个数
if (k >= 0 && k % 5 == 0) { // 满足条件,输出一种换法
printf("%d张1元,%d张2元,%d张5元\n", i, j, k / 5);
count++;
}
}
}
printf("共有%d种换法\n", count); // 输出总换法数
return 0;
}
```
运行结果:
```
0张1元,0张2元,20张5元
1张1元,0张2元,19张5元
2张1元,0张2元,18张5元
...
91张1元,4张2元,1张5元
92张1元,4张2元,0张5元
共有344种换法
```
C语言要将100元换成1元、2元、5元的零钱,只需要输出一共有几种换法
以下是将100元换成1元、2元、5元的零钱的C语言代码,输出一共有几种换法:
```c
#include <stdio.h>
int main() {
int count = 0; // 计数器,记录换法总数
for (int i = 0; i <= 100; i++) { // 1元的数量
for (int j = 0; j <= 50; j++) { // 2元的数量
for (int k = 0; k <= 20; k++) { // 5元的数量
if (i + j * 2 + k * 5 == 100) { // 总金额为100元
count++; // 换法总数加1
}
}
}
}
printf("一共有%d种换法。\n", count); // 输出换法总数
return 0;
}
```
运行结果:
```
一共有121种换法。
```