
较为困难的是如何选择算法进行合法性判断,最后是采用时时验证(边压栈边出栈)来判断合法性
- #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);
-
相关阅读:
NCCL P2P与共享内存SHM的差异
CSS之垂直水平居中的背后
利用Semaphore实现多线程调用接口A且限制接口A的每秒QPS为10
【功能测试】-【黑盒测试用例】
git 常用命令
3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒
【剑指Offer】8.二叉树的下一个结点
数据产品读书笔记——认识数据产品经理
软件工程17-18期末试卷
Windows10安装麒麟桌面V10双系统
-
原文地址:https://blog.csdn.net/m0_62512076/article/details/132946791