给定n个数,枚举能组成的所有n位数c++代码
时间: 2024-10-20 21:19:02 浏览: 3
在C++中,如果你想生成所有可能的n位数字组合,你可以使用回溯算法或者动态规划,但这会涉及到大量的嵌套循环和递归。下面是一个简单的使用回溯算法的例子,用于生成1到9之间所有n位数:
```cpp
#include <iostream>
#include <vector>
void generateNumbers(int n, std::string current, std::vector<std::string>& result) {
if (current.length() == n) {
result.push_back(current);
return;
}
for (int i = 1; i <= 9; ++i) {
current += std::to_string(i);
generateNumbers(n, current, result);
current.pop_back(); // 回溯,移除当前添加的数字
}
}
std::vector<std::string> enumerateAllNbitNumbers(int n) {
std::vector<std::string> result;
generateNumbers(n, "", result);
return result;
}
int main() {
int n = 3;
std::vector<std::string> numbers = enumerateAllNbitNumbers(n);
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
在这个例子中,`generateNumbers` 函数会递归地尝试将1到9的数字添加到`current`字符串中,直到达到指定的位数n。然后将结果存入`result`向量,并在每次递归结束时回溯一步。
阅读全文