PTA 1051

Posted 何时能够变强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA 1051相关的知识,希望对你有一定的参考价值。

题目解决方案

  • 抓住一个核心的要点就是一个数想要出栈,1种情况是比它大的数都没有进来,另一种情况是比它大的都出去了。我们怎么判断是否有比它大的数呢?通过一个maxvalue来记录能弹出的最大值的最小值。你可能看到这个会有一些懵,我来解释一下。比如6 5 4这样的出栈顺序,我们读取6时,6是最大值,到5时,最大值是5了。如果再判断4-6会浪费时间,5已经可以弹出了,说明比五大的都没问题了,我们只需要判断4-5中间的数是否清理干净即可。
  • 还有一个注意的点是栈的长度有限制,这个怎么解决呢就是通过判断出栈的数是否更新了最大值,如果更新最大值,前面的数弹出的都比它小。这样的话,我们可以判断里面最多有maxvalue-i(对应的下标)个数,看是否小于栈的容量即可。
  • 具体的看代码细节吧。
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<queue>
#include<string>

using namespace std;

int main(int argc, char** argv)

    int m,n,k;
    cin>>m>>n>>k;
    for(int i=0;i<k;i++)
    	
    	int flag[1001]=0;
    	int maxvalue=-1;
    	bool ans=true;
    	for(int j=0;j<n;j++)
    		
    		int temp;
    		cin>>temp;
    		maxvalue=max(temp,maxvalue);
    		if(maxvalue==temp)
    		
    			if(temp-j>m)
    			ans=false;
			
			else
			
				for(int k=temp+1;k<maxvalue;k++)
				
					if(flag[k]==0)
					ans=false;
				
			
			flag[temp]=1;
			maxvalue=temp;
		
		if(ans)
		cout<<"YES\\n";
		else
		cout<<"NO\\n";
	
    return 0;



新人创作打卡挑战赛 发博客就能抽奖!定制产品红包拿不停!

以上是关于PTA 1051的主要内容,如果未能解决你的问题,请参考以下文章

codevs 1051 接龙游戏

HDOJ 1051. Wooden Sticks

51nod 1051 求最大子矩阵和

如何避免 .aspx.designer.cs 文件中的 CA1051:DoNotDeclareVisibleInstanceFields?

PAT 1051. Pop Sequence (25)

1051 接龙游戏