您的位置:首页 > 其它

1002. 射击游戏1

2017-09-13 21:52 225 查看
Time Limit: 1sec             MemoryLimit:256MB

Description

小明很喜欢玩射击游戏。他刚考完了数据结构期末考试,感觉不错,于是又来到了射击娱乐场放松一下。和上次一样,先从老板那租了一把步枪和装有N发子弹的弹夹。这里,再把规则说一遍。在射击的过程中,小明每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去。注意:所有的子弹都从枪口上膛。小明感觉这有点像《数据结构》课程中的“栈”的特点。因此在打完了这N发子弹之后,他想验证一下这些子弹打出来的顺序是不是真的满足“栈”的特性。假设N颗子弹的编号为1,2,…,N。子弹从弹夹中取出的顺序也是从1到N,这里N = 10。给定一个子弹被打出的顺序,你可以帮小明验证它满不满足“栈”的打出顺序吗?

Input

可能有多个测试输入,第一行给出总共的测试输入的个数。
每个测试输入只有一行:用空格隔开的十个数,表示子弹打出的编号顺序。

Output

对每个测试输入,输出只有一行:
“Yes”,如果打出顺序满足“栈”的特点;
“No”,如果打出顺序不满足“栈”的特点。

Sample Input


 Copy sample input to clipboard

3
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
3 1 2 4 5 6 7 8 9 10


Sample Output

Yes
Yes
No


 
   
   
   
 标准做法应该是用stack来做,但是由于标好了只有十颗子弹,所以想到用数组做比较熟悉
#include<iostream>
using namespace std;
int main()
{
int sta[11]={0};
int num,temp,rem=0,flag=0;
cin>>num;
for(int i=0;i<num;i++)
{
for(int j=0;j<10;j++)
{
cin>>temp;
sta[temp]=1;
if(j>=1&&temp<rem-1)
{
for(int k=temp+1;k<rem;k++)
{
if(sta[k]==0)
{
flag=1;
break;
}
}
}
rem=temp;
}
if(flag==1)cout<<"No"<<endl;
else cout<<"Yes"<<endl;
for(int l=0;l<10;l++)
sta[l]=0;
flag=0;
}
}


其中(for(int k=temp+1;k<rem;k++)这里犹豫要不要用rem-1,最后还是没用 AC过后试着交了rem-1发现是失败的 对于循环自己还是不够熟悉

除此以外一开始一直WA

自己也没弄懂,毕竟按照stander input是没问题的

到了后来才发现自己忘记了重置flag导致前面如果出现了No以后的全是No
 
 
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: