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的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 .aspx.designer.cs 文件中的 CA1051:DoNotDeclareVisibleInstanceFields?