<textarea readonly="readonly" name="code" class="c++">
//回溯算法 - 全排列 题目:给定一个没有重复数字的序列,返回其所有可能的全排列。 问题函数定义:
//cpp
//vector<vector<int>> permute(vector<int>&nums) {
// // 函数实现
//}
//裁判测试程序样例:
//
//cpp
#include <iostream>
#include <vector>
using namespace std;
void p(vector<int>& nums, int k, int n, vector<vector<int>>& m) {
if (k == n-1) {
m.push_back(nums);
return;
}
for (int i = k; i < n; i++) {
swap(nums[k], nums[i]); // 交换元素
p(nums, k + 1, n, m);
swap(nums[k], nums[i]); // 恢复原始顺序,以便进行下一轮交换
}
}
vector<vector<int>> permute(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> m;
p(nums, 0, n, m);
return m;
}
void printResult(vector<vector<int>>& result) {
for (const auto& permutation : result) {
for (int num : permutation) {
cout << num << " ";
}
cout << endl;
}
}
int main() {
vector<int> nums = { 1, 2, 3 };
vector<vector<int>> result = permute(nums);
printResult(result);
return 0;
}
//输入样例:
//
//[1, 2, 3]
//输出样例:
//
//1 2 3
//1 3 2
//2 1 3
//2 3 1
//3 1 2
//3 2 1
</textarea>