c语言怎么编程兑换钞票

时间:2025-01-24 14:08:13 游戏攻略

在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;

}

```

方法五:多种兑换方法(输出多种方法)