c++使用蛮力法编写求解全排列问题(问题描述):对于给定的正整数n(n≥1),求1~n的所有全排列。
时间: 2024-09-10 11:07:22 浏览: 75
蛮力法(Brute Force)是一种简单的解决问题的方法,它尝试所有可能的解决方案,然后选择最好的那一个。在求解全排列问题时,蛮力法将会生成1到n的所有可能排列组合,并检查每一个排列。
以下是一个使用C++编写的简单示例代码,演示如何使用蛮力法解决给定正整数n的全排列问题:
```cpp
#include <iostream>
#include <vector>
// 用于输出排列的函数
void printPermutation(std::vector<int> &permutation) {
for (int num : permutation) {
std::cout << num << " ";
}
std::cout << std::endl;
}
// 使用递归生成全排列的函数
void generatePermutations(std::vector<int> &permutation, std::vector<bool> &used, int n) {
if (permutation.size() == n) {
printPermutation(permutation);
return;
}
for (int i = 1; i <= n; ++i) {
if (!used[i]) {
permutation.push_back(i);
used[i] = true;
generatePermutations(permutation, used, n);
// 回溯
permutation.pop_back();
used[i] = false;
}
}
}
// 主函数
int main() {
int n;
std::cout << "请输入正整数n(n≥1):";
std::cin >> n;
std::vector<int> permutation;
std::vector<bool> used(n + 1, false); // 记录每个数字是否已被使用
generatePermutations(permutation, used, n);
return 0;
}
```
这段代码首先定义了两个辅助函数:`printPermutation`用于输出排列,`generatePermutations`用于递归生成所有排列。主函数中,我们读取用户输入的n值,初始化一个用于存储当前排列的向量`permutation`以及一个标记数组`used`用于记录1到n中每个数字是否已经被用在了当前排列中。然后调用`generatePermutations`函数开始生成排列。
阅读全文