设置一个变量tmp,由1开始自增。当栈顶元素与输入的元素不匹配时将当前tmp入栈并tmp自加,当匹配时栈顶出栈。
#include<stdio.h> #include<stack> using namespace std; int main(){ int i,j,M,N,K; int input,tmp,flag; scanf("%d %d %d",&M,&N,&K); for(i=0;i<K;i++){ flag=1; stack<int> ss; tmp=1; for(j=0;j<N;j++){ scanf("%d",&input); while(flag){ if(ss.empty()||ss.top()!=input){ ss.push(tmp); //printf("push:%d ",ss.top()); if(ss.size()>M){ flag=0; break; } tmp++; } else if(ss.size()>=1&&ss.top()==input){ //printf("pop:%d\n",ss.top()); ss.pop(); break; } } } if(ss.size()>0) flag=0; if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }