一个n位数,如果每一位的数字都是1、2或者3,并且所有数字之和等于k,那么就称这个数是不幸N位数。 输入n和k,从小到大输出所有的不幸N位数。 c++递归方法实现c++萌新级别好理解
时间: 2024-04-13 17:31:03 浏览: 18
当然,这里是一个更简单易懂的版本:
```cpp
#include <iostream>
#include <string>
using namespace std;
void generateUnluckyNumbers(int n, int k, string number) {
if (n == 0) {
if (k == 0) {
cout << number << endl;
}
return;
}
for (int i = 1; i <= 3; i++) {
if (k - i >= 0) {
generateUnluckyNumbers(n - 1, k - i, number + to_string(i));
}
}
}
void printUnluckyNumbers(int n, int k) {
generateUnluckyNumbers(n, k, "");
}
int main() {
int n, k;
cout << "Enter the value of n: ";
cin >> n;
cout << "Enter the value of k: ";
cin >> k;
cout << "Unlucky " << n << "-digit numbers with sum " << k << ": " << endl;
printUnluckyNumbers(n, k);
return 0;
}
```
这段代码同样会根据输入的n和k值打印出所有的不幸N位数。它使用了一个字符串来保存当前生成的数字,并通过递归进行遍历。每次递归时,都会检查剩余的位数和剩余的和是否满足条件,如果满足,则继续递归生成下一位数字。注意,这里同样假设输入的n和k都是合法的正整数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)