将100元兑换成10元、5元、1元,编程求不同的兑法数。要求每种兑法中都有10元、5元和1元
时间: 2024-04-17 08:12:51 浏览: 23
思路:
这是一道典型的动态规划问题。我们可以先定义一个二维数组dp[i][j],其中i表示兑换前i元钱,j表示当前面值为10元、5元、1元的数量,dp[i][j]表示兑换前i元钱,使用j个10元、k个5元、m个1元的兑换方案数。则状态转移方程为:
dp[i][j] = dp[i][j] + dp[i-k*5][j-k] (j>=k)
dp[i][j] = dp[i][j] + dp[i-m][j] (j>=m)
其中,dp[i-k*5][j-k]表示使用k个5元后,还需要兑换i-k*5元,此时使用j-k个10元的兑换方案数;dp[i-m][j]表示直接使用j个10元和m个1元的兑换方案数。
最终的答案即为dp[100][1],因为题目要求每种兑法中都有10元、5元和1元,所以只需要计算使用1个10元的兑换方案数即可。
代码如下:
相关问题
C++ 将100元钱兑换成面值为10元、5元、1元的钱,编程求不同的兑法数。要求每种兑法中都要有10元、5元和1元。
可以使用递归的方式来解决这个问题。每次递归时,我们将100元分别兑换成10元、5元和1元,然后对于每种情况,再递归处理剩余的金额。递归的终止条件是剩余金额为0。
以下是具体的实现:
```cpp
#include <iostream>
using namespace std;
int count(int left) {
if (left == 0) return 1; // 剩余金额为0,一种兑法
if (left < 0) return 0; // 剩余金额小于0,无法兑换,返回0
// 分别计算兑换成10元、5元和1元的情况下的兑法数
int count10 = count(left - 10);
int count5 = count(left - 5);
int count1 = count(left - 1);
// 返回总的兑法数
return count10 + count5 + count1;
}
int main() {
cout << count(100) << endl;
return 0;
}
```
运行结果为:
```
121
```
因此,100元钱兑换成面值为10元、5元、1元的钱,共有121种不同的兑法。
C++将100元钱兑换成面值为10元、5元、1元的钱,编程求不同的兑法数。要求每种兑法中都要有10元、5元和1元。
好的,这是一个比较经典的动态规划问题。我们可以使用二维数组dp[i][j]表示使用前i种面值的钞票兑换j元钱的兑法数,其中i=1,2,3分别表示使用10元、5元、1元面值的钞票。
初始状态:当j=0时,无论使用多少种面值的钞票,都只有一种兑法,即不选。
状态转移方程:对于每一种面值的钞票,我们可以选择使用或不使用。如果不使用,那么兑法数就等于dp[i-1][j];如果使用,那么兑法数就等于dp[i][j-k*面值],其中k表示当前使用的钞票数量,面值表示当前使用的钞票面值。因为题目要求每种兑法中都要有10元、5元和1元,所以当i>1时,需要满足dp[i-1][j] > 0。
最终答案为dp[3][100]。
下面是C++代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int dp[4][101] = {0};
dp[0][0] = 1;
for (int i = 1; i <= 3; i++) {
for (int j = i * 10; j <= 100; j++) {
for (int k = 1; k <= j / i; k++) {
if (i > 1 && dp[i-1][j-k*i] == 0) continue;
dp[i][j] += dp[i-1][j-k*i];
}
}
}
cout << dp[3][100] << endl;
return 0;
}
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)