-
Notifications
You must be signed in to change notification settings - Fork 0
/
7200_Rails.c
56 lines (51 loc) · 1.49 KB
/
7200_Rails.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1050
int main(int argc, char *argv[])
{
int flag, initial, check[MAX_LEN], stack[MAX_LEN], stack_top, n, tmp_int, i, check_len;
char tmp_in[MAX_LEN*10], tmp_ch;
while (~scanf("%d", &n)&&n) {
while(scanf("%d", &tmp_int)&&tmp_int!=0)
{
i = 0;
flag = 1;
while (getchar()!='\n') {
check[i++] = tmp_int;
scanf("%d", &tmp_int);
}
check[i++] = tmp_int;
/* ^----- 補上最後一個 */
check_len = i;
initial = 1;
i = 0;
stack_top = 0;
while (i<check_len) {
if (initial==check[i]) {
/* 隊列頭剛好是答案 */
initial++;
i++;
}
else if (stack_top&&stack[stack_top]==check[i]) {
/* 堆疊頭是答案 */
stack_top--;
i++;
}
else if (initial<n) {
/* 都不是答案,塞進去堆疊 */
stack[++stack_top] = initial;
initial++;
}
else {
/* 錯誤 */
flag = 0;
break;
}
}
printf("%s\n", (flag)?"Yes":"No");
}
putchar('\n');
}
return 0;
}