给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。
要求输出所有火车出站的方案,以字典序排序输出。
要求输出所有火车出站的方案,以字典序排序输出。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 #include<iostream> #include<stack> #include<algorithm> using namespace std; bool isOutNum(int *push,int *pop,int len)//判断pop是不是push的出栈序列 { if(push==NULL || pop==NULL ||len<=0) return false; stack<int> Stack; int i=0,j=0; for(i=0;i<len;i++)//依次把push中的数入栈 { Stack.push(push[i]); while(j<len && Stack.size()!=0 && pop[j]==Stack.top())//依次判断pop序列每个值是否与栈顶相等 { Stack.pop(); j++; } } return Stack.empty(); } int main() { int N; while(cin>>N) { int *pushNum=new int [N]; int *popNum=new int [N]; for(int i=0;i<N;i++) { cin>>pushNum[i]; popNum[i]=pushNum[i]; } sort(popNum,popNum+N); do { if(isOutNum(pushNum,popNum,N))//如果该排列正确,则输出 { for(int i=0;i<N-1;i++) cout<<popNum[i]<<" "; cout<<popNum[N-1]<<endl; } } while(next_permutation(popNum,popNum+N));//获取下一个排列 } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?