栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

注意,数组从1开始读入!

`#include 
#include 

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;
}```


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312047.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号