13 solutions

  • 2
    @ 2022-1-2 13:03:57

    感觉我代码挺好理解的,不知道有没有bug

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        stack <int> s;
        int flag=0;
        int k[1007];//开个数组读入需要的序列
        for(int i=0;i<n;i++)
        {
        	scanf("%d",&k[i]);
    	} 
    	for(int i=1;i<=n;i++)
    	{  
    		while(!s.empty()&&s.top()==k[flag])
    		{
    			s.pop();
    			flag++;
    		}
    		s.push(i); 
    	}//中途可以先出车站的就先出去,不能不出的就存下来
    if(!s.empty())
    {	
    	for(int j=flag;j<n;j++)//flag可以记录从车站出去的火车到第几辆了
    	{
    		if(k[j]==s.top()) s.pop();
    		else
    		{
    			break;
    		}
    	}
    }//继续匹配车站中剩下的
    	s.empty()?cout<<"YES":cout<<"NO";//判断
        return 0;
    }
    

    Information

    ID
    291
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    6
    Tags
    # Submissions
    139
    Accepted
    44
    Uploaded By