1 solutions

  • 2
    @ 2023-12-28 13:32:28

    题意

    输入火车长度 nn ,如果借助 C 车站,火车能从 A 方向到 B 方向,就输出 YES,否则输出 NO

    PS:先进入 C 车站的车厢后出来(和栈一样)

    思路

    输入一个编号为 xx 的车厢,如果有比 xx 大的车厢在车站里,就输出 NO,否则就标记 xx 已出站,并将 xx 之前所有没进过车站的车厢都放进车站(因为只有 xx 之前没进站的所有车厢进去, xx 号车厢才能进去)

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int a[1005];
    int main(int argc, char **argv){
    	int n;
    	cin >> n;
    	for (int i = 1;i <= n;i++){
    		int x;
    		cin >> x;
    		bool f = 1;
    		for (int j = x + 1;j <= n;j++){	// 检测是否有比 x 大的数在栈里
    			if (a[j] == 1){
    				f = 0;
    				break;
    			}
    		}
    		if (!f){	// 如果有,就输出 NO 并退出
    			printf("NO");
    			return 0;
    		}
    
    		a[x] = 2;	// 否则,标记 x 为已出栈状态
    		for (int j = 1;j < x;j++){	// 并标记 x 之前的数为入栈状态
    			if (a[j] != 2){
    				a[j] = 1;
    			}
    		}
    	}
    	printf("YES");	// 如果每个车厢都没问题,就输出 YES
    	return 0;
    }
    
    • 1

    Information

    ID
    842
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    # Submissions
    84
    Accepted
    21
    Uploaded By