,2,3 构成的 n 位数中,共有多少个" 123"好数?c++实现
时间: 2024-04-18 17:27:07 浏览: 12
要计算由数字2、3组成的n位数中,有多少个"123"好数,可以使用递归来实现。下面是一个使用C++编写的示例代码:
```cpp
#include <iostream>
using namespace std;
int countGoodNumbers(int n, bool hasOne, bool hasTwo, bool hasThree) {
// 递归的结束条件:已经到达n位数
if (n == 0) {
// 如果同时包含数字1、2、3,则是一个"123"好数
if (hasOne && hasTwo && hasThree) {
return 1;
} else {
return 0;
}
}
// 继续递归,分别尝试添加数字2、3或不添加数字
int count = 0;
// 添加数字2
count += countGoodNumbers(n - 1, hasOne, true, hasThree);
// 添加数字3
count += countGoodNumbers(n - 1, hasOne, hasTwo, true);
// 不添加数字
count += countGoodNumbers(n - 1, hasOne, hasTwo, hasThree);
return count;
}
int main() {
int n;
cout << "请输入n的值:";
cin >> n;
int result = countGoodNumbers(n, false, false, false);
cout << "共有" << result << "个\"123\"好数。" << endl;
return 0;
}
```
请注意,该代码中的递归函数countGoodNumbers使用了四个布尔型参数,用于记录当前数字中是否包含1、2、3。初始状态下,这四个参数都为false。每次递归时,根据当前位数的数字情况进行递归调用,直到达到n位数为止。最后返回符合条件的"123"好数的个数。
这只是一种实现方式,你可以根据自己的需求进行修改和优化。希望对你有帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)