UVA 514 Rails

来源:互联网 发布:.fun域名火了 编辑:程序博客网 时间:2024/06/06 01:30
输入和输入我都折腾了好久,这道题花了差不多两个小时才解决,而且还参考了书上的代码!QAQ
#include <iostream>#include <cstdio>#include <stack>using namespace std;int main(){int num;//这就是那个n。。。。while(scanf("%d",&num)&&num)//居然要输入两个0才算程序的终结{int arr[1005];stack<int> sta;while(scanf("%d",&arr[1])&&arr[1])//把测试数据的第一个数据提出来单独输入好判断{for(int i=2;i<=num;++i)scanf("%d",&arr[i]);//通过for来输入的测试那个数据,bool flag=true;//标记int tmp1=1,tmp2=1;while(tmp2<=num)//模拟整个入栈和出栈的过程{if(tmp1==arr[tmp2])//按照1~num的顺序和那个想要的出栈顺序进行比较,不一定是依次的{tmp1++;tmp2++;}else if(!sta.empty()&&sta.top()==arr[tmp2]){sta.pop();tmp2++;}else if(tmp1<=num){sta.push(tmp1);//栈顶的元素是最大的tmp1++;}else{flag=false;break;}}if(flag)printf("Yes\n");elseprintf("No\n");}printf("\n");}return 0;}

0 0
原创粉丝点击