较为困难的是如何选择算法进行合法性判断,最后是采用时时验证(边压栈边出栈)来判断合法性
- #include
- #include
- #include
- using namespace std;
- int main()
- {
- int n;
- int num[105];
- while(cin>>n)
- {
- if(n==0)
- break;
- for(int index=0;index
//要输入进行判断的数组 - {
- cin>>num[index];
- }
- stack<int> st;
- int index=0;
- for(int i=1;i<=n;i++)//判断栈的合法性
- {
- st.push(i);//按题目顺序从1到N进行压栈
- while(!st.empty()&&st.top()==num[index])//遇到合适相等的出栈,注意使用的是while循环
- {
- st.pop();
- index++;//index变化,接着判断下一个输入的数字
- }
- }
- if(st.empty()&&index==n)//如果st全部出栈,就是合法
- cout<<"Yes"<
- else
- cout<<"No"<
- }
-
- return 0;
- }
可以使用这一句接近num数组的动态创建问题
vector<int> num= vector<int>(n, 0);
-
相关阅读:
【无标题】
php在线客服系统nginx环境https配置wss反转适应小程序
JavaFx学习问题3---Jar包路径问题 (疑难杂症)
Qt(day1)
DEDE织梦标签名称:{/dede:arclist} 详解
关于#python#的问题:flask怎么在接口发送响应后紧跟着触发目标函数啊
代码随想录二刷 Day21
VIM指令
dplyr 中的filter报错:Can‘t transform a data frame with duplicate names
13-JavaSE基础巩固练习:ArrayList集合的练习
-
原文地址:https://blog.csdn.net/m0_62512076/article/details/132946791