多语言企业网站开发,电子商务网页设计是什么,g时代网站建设,即商通网站建设推广我在网上看的博客大部分是告诉你这是卡特兰数#xff0c;然后只给出了如何求解有多少种排列#xff0c;没有给出具体排列是怎么样的。如果你还不知道卡特兰数#xff0c;请查看#xff1a;https://leetcode.cn/circle/discuss/lWYCzv/
这里记录一下如何生成每种具体的排列…我在网上看的博客大部分是告诉你这是卡特兰数然后只给出了如何求解有多少种排列没有给出具体排列是怎么样的。如果你还不知道卡特兰数请查看https://leetcode.cn/circle/discuss/lWYCzv/
这里记录一下如何生成每种具体的排列c实现
// 回溯#include iostream
#include vector
#include stack
#include algorithmusing namespace std;void backtrack(vectorint nums, vectorint permutation, vectorbool used, vectorvectorint result) {if (permutation.size() nums.size()) {result.push_back(permutation);return;}for (int i 0; i nums.size(); i) {if (!used[i]) {used[i] true;permutation.push_back(nums[i]);backtrack(nums, permutation, used, result);permutation.pop_back();used[i] false;}}
}vectorvectorint findPermutations(vectorint nums) {vectorvectorint result;vectorint permutation;vectorbool used(nums.size(), false);backtrack(nums, permutation, used, result);return result;
}int main() {int n;cin n;vectorint nums(n);for (int i 0; i n; i) {cin nums[i];}vectorvectorint permutations findPermutations(nums);printf(出栈顺序有%d种: \n, permutations.size());for (const auto permutation : permutations) {for (int num : permutation) {cout num ;}cout endl;}return 0;
}