彬彬偷偷告诉了平行世界的其他杰哥们这个世界里的杰哥已经得到了阿伟,于是他们也来到了这个世界想要教阿伟登Dua郎,现在他们“成群杰队”地赶来了!

伟大的圣嘉然为了帮助阿伟逃跑,在杰哥们的前进路线上放了一个陷阱,杰哥们会依次掉进去。 现在有n个杰哥从A方向前来,按掉入陷阱的顺序编号为1~n。现在给出一串数,你的任务是判断他们全部走出来后的编号有没有可能是这串数。(例如,出来时5 4 1 2 3是不可能的,但5 4 3 2 1 是可能的。) (注意:为了方便起见,每个杰哥都以一个int值代替,并且由于杰哥体积庞大,陷阱可以完全看成一个栈的结构。有的杰哥可能在后面的杰哥进栈前就已经出栈)。

简而言之:有一个{1,2,3, …,N}的队列依次进栈,问出栈的顺序是否可能是题目给出的数列,如果可能,函数返回1,如果不可能,函数返回0.

注意,数组从1开始读入!`#include <stdio.h>
#include <stdlib.h>

const int N = 100;

int check(int Jie[],int n);
int main()
{
int n; int Jie[N];
scanf("%d",&n);
for(int i=1;i<=n;++i)//注意,数组从1开始读入!
scanf("%d",&Jie[i]);
if(check(Jie,n))
printf(“Yes”);
else
printf(“No”);
}
/* 请在这里填写答案 */`

//任意数A后面比A小的数都是按照降序排列的
int check(int Jie[],int n){
    int flag;
    if(n <= 0) return 0;
    for(int i = 0; i < n; i++){
        flag = 1;
        int j = i + 1;
        int a[n -j -2];
        int k = 0;
        for(; j < n; j++){
            if(Jie[i] > Jie[j])
                a[k++] = Jie[j];
        }
        for(int l = 0; l < k-1; l++){
            if(a[l] < a[l+1]){
                flag = 0;
                break;
            }
        }
        if(flag == 0)
            break;
    }
    if(flag == 1)
        return 1;
    if(flag == 0)
        return 0;
}```

上一篇:java开发自我介绍面试,Java架构师面试资料


下一篇:【android】使用SharedPreferences存取复杂数据