码迷,mamicode.com
首页 > 其他好文 > 详细

Pop Sequence

时间:2018-03-22 01:35:12      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:tac   target   random   com   ted   font   图片   用例   title   

Pop Sequence

Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain 1, 2, 3, 4, 5, 6, 7 from the stack, but not 3, 2, 1, 7, 5, 6, 4.

Input Specification:

Each input file contains one test case. For each case, the first line contains 3 numbers (all no more than 1000): M(the maximum capacity of the stack), N (the length of push sequence), and K (the number of pop sequences to be checked). Then K lines follow, each contains a pop sequence of N numbers. All the numbers in a line are separated by a space.

Output Specification:

For each pop sequence, print in one line "YES" if it is indeed a possible pop sequence of the stack, or "NO" if not.

Sample Input:

5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2

Sample Output:

YES
NO
NO
YES
NO

AC Code
 1 #include<stdio.h>
 2 //本解法主要思路为逆向放置
 3 //即将测试用例中的数从最后一个开始放置
 4 //如果能在一定容量的堆栈下输出N~1
 5 //将放与取操作取反
 6 //即可满足题意
 7 int main(){
 8   int M,N,K;
 9   int target;
10   int top;
11   int data[1001];
12   scanf("%d %d %d",&M,&N,&K);
13   int b[N];
14   int n ;
15   while(K--){
16     target = N;
17     top = -1;
18     n = N;
19     while(n){
20       scanf("%d",&b[N-n]);
21       n--;
22     }
23     n = N-1;
24     while(n+1){
25         //printf("%d\n",top);
26       top++;
27       if(top >= M){
28         break;
29       }
30       data[top] = b[n];
31        
32       while(data[top] == target&&top >-1){
33         target--;
34          //printf("%d",top);
35         top--;
36        // printf("%d",top); 
37       }
38       n--;
39     }
40     
41        //printf("%d",top);
42        //printf("%d",target);
43     if(top == -1){
44       printf("YES");
45     }else{
46       printf("NO");
47     }
48     if(K != 0){
49       printf("\n");
50     }
51   }
52   return 0;
53 }

技术分享图片

 

Pop Sequence

标签:tac   target   random   com   ted   font   图片   用例   title   

原文地址:https://www.cnblogs.com/jinjin-2018/p/8620761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!