当前位置: 首页 > news >正文

n个不同元素进栈,求出栈元素的【不同排列】以及【排列的数量】?

我在网上看的博客大部分是告诉你这是卡特兰数,然后只给出了如何求解有多少种排列,没有给出具体排列是怎么样的。如果你还不知道卡特兰数,请查看:https://leetcode.cn/circle/discuss/lWYCzv/

这里记录一下如何生成每种具体的排列:(c++实现)

// 回溯#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>using namespace std;void backtrack(vector<int>& nums, vector<int>& permutation, vector<bool>& used, vector<vector<int>>& 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;}}
}vector<vector<int>> findPermutations(vector<int>& nums) {vector<vector<int>> result;vector<int> permutation;vector<bool> used(nums.size(), false);backtrack(nums, permutation, used, result);return result;
}int main() {int n;cin >> n;vector<int> nums(n);for (int i = 0; i < n; i++) {cin >> nums[i];}vector<vector<int>> permutations = findPermutations(nums);printf("出栈顺序有%d种: \n", permutations.size());for (const auto& permutation : permutations) {for (int num : permutation) {cout << num << " ";}cout << endl;}return 0;
}
http://www.lryc.cn/news/172327.html

相关文章:

  • Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化...
  • 多线程的学习第二篇
  • git之撤销工作区的修改和版本回溯
  • sed awk使用简介
  • 竞赛选题 基于深度学习的人脸识别系统
  • idea Terminal 回退历史版本 Git指令 git reset
  • 华为云云耀云服务器L实例评测|华为云上安装监控服务Prometheus三件套安装
  • C语言基础知识点(八)联合体和大小端模式
  • 一个线程运行时发生异常会怎样?
  • CSS中去掉li前面的圆点方法
  • Python:获取当前目录下所有文件夹名称及文件夹下所有文件名称
  • 系统架构设计师-数据库系统(1)
  • Docker的相关知识介绍以及mac环境的安装
  • Android设计支持库
  • 【Java 基础篇】Java实现文件搜索详解
  • 会C++还需要再去学Python吗?
  • vue部分/所有内容全屏切换展示
  • 8.gec6818开发板通过并发多线程实现电子相册 智能家居 小游戏三合一完整项目
  • 角度回归——角度编码方式
  • 【C# Programming】值类型、良构类型
  • Linux Day18 TCP_UDP协议及相关知识
  • 【Java 基础篇】Java网络编程实时数据流处理
  • Oracle 和 mysql 增加字段SQL
  • 【脚本】 【Linux】循环执行命令
  • 快速用Python进行数据分析技巧详解
  • BD就业复习第二天
  • 大数据Flink(八十五):Window TVF 支持多维数据分析
  • css-边框原理教程
  • 【数据结构】时间、空间复杂度
  • Databend 开源周报第 111 期