
较为困难的是如何选择算法进行合法性判断,最后是采用时时验证(边压栈边出栈)来判断合法性
- #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);
-
相关阅读:
RISC-V 指令学习笔记(基于CH32V103)
Leetcode—704.二分查找【简单】
神经网络bp算法应用,bp神经网络动量因子
HTML base标签
CrystalNet ADO.Net VCL for Delphi
HttpContext.TraceIdentifier那严谨的设计
Github 星标 57.9K!阿里巴巴 Java 面试突击汇总(全彩版)首次公开
【牛客网刷题】(第三弹)链表与二分法oj
一文详解 requests 库中 json 参数和 data 参数的用法
深度学习500问——Chapter08:目标检测(2)
-
原文地址:https://blog.csdn.net/m0_62512076/article/details/132946791