首页 > 其他分享 >07 有趣的跳跃

07 有趣的跳跃

时间:2022-10-10 22:44:51浏览次数:52  
标签:07 int 000 jolly 循环 差值 跳跃 有趣 输入

 
 

题目描述:

输入:一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。输出一行,若该序列存在“有趣的跳跃”

输出"Jolly",否则输出"Not jolly"。

思路:第一个for循环输入相应个数的整数~第二个for循环求输入的相邻数之间的差的绝对值~对求得的差值进行排序~第三个for循环进行jolly判断:

排好序的差值相邻两数字后减前一个数的和若为jolly应=n-2;

 

阻碍:1,求两数字之差的绝对值的函数:c=abs(a-b)~a b c都为整型

    2 排序:冒泡排序:注意i=1还是i=0

    3 i:是从0开始还是从1开始很重要!:因为从1开始后面两两相减的话可能会有溢出的数组!!

    4 注意n=1的情况:永远为Jolly

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 //三个for循环
 4 int main(){
 5     int n=0;                    //序列的长度
 6     int a[3010],b[3010];        //定义两个数组,一个接收输入的数,一个接收两数字之间的差值
 7     scanf("%d",&n);
 8 
 9 
10     //第一个for循环:输入n个数 
11     for(int i=0;i<n;i++){
12         scanf("%d",&a[i]);
13     }
14 
15     //n=1:任何只包含单个元素的序列一定存在“有趣的跳跃”
16     if(n==1)
17         printf("Jolly");
18     else if(n>1){
19     
20 
21     //第二个for循环:求输入数两两之间的差值
22     for(int i=0;i<n-1;i++){    //输入n个数则会有n-1个差值
23         b[i]=abs(a[i]-a[i+1]);  
24     }
25 
26     // //排序差值
27     // for(int i=1;i<=n-2;i++){
28     //     int min=b[i],q=i;
29     //     for(int j=i;i<=n-1;j++){
30     //         if(b[j]<min){
31     //             min=b[j];
32     //             q=j;
33     //         }
34     //     }
35     //     int tem;
36     //     tem=b[i];
37     //     b[q]=tem;
38     //     b[i]=b[q];
39         
40     // }
41     // for (int i = 1; i <= n-1; i++)
42     // {
43     //     if(i != b[i]){
44     //         printf("Not Jolly");
45     //         return 0;
46     //     }
47     // }
48     // printf("Jolly");
49     // return 0;
50     
51 
52     //冒泡排序对求出来的差值进行由小到大的排序
53     //待排序数字:n-1个
54     int min=0;
55     for(int i=0;i<n-1;i++){         //一共排序n-1轮
56         for(int j=1;j<n-1;j++){
57             if(b[j]<b[j-1]){
58                 min=b[j];
59                 b[j]=b[j-1];
60                 b[j-1]=min;
61             }
62         }
63     } 
64 
65     //第三个for循环:jolly判断
66     int flag=0;
67     for(int i=0;i<n-1;i++){
68         if(b[i+1]-b[i]==1)
69             flag++;
70         else    
71             break;
72     }
73     if(flag==n-2)
74         printf("Jolly");
75     else
76         printf("Not jolly");
77     }
78     
79     return 0;
80 }

 

标签:07,int,000,jolly,循环,差值,跳跃,有趣,输入
From: https://www.cnblogs.com/luoxiaoluo/p/16777704.html

相关文章

  • 每日一题【20200723】
    title:每日一题【20200723】excerpt:第二天建模打卡tags:[数学建模,线性规划,intlinprog,用分支定界法,整数规划]categories:[学习,数学建模]index_img:h......
  • 每日一题【20200725】
    title:每日一题【20200725】excerpt:第四天建模打卡tags:[数学建模,非线性规划,fmincon]categories:[学习,数学建模]index_img:https://picture-store-repos......
  • 每日一题【20200724】
    title:每日一题【20200723】excerpt:第三天建模打卡tags:[数学建模,线性规划,intlinprog,0-1规划]categories:[学习,数学建模]index_img:https://picture-......
  • 每日一题【20200727】
    title:每日一题【20200727】excerpt:第六天建模打卡tags:[数学建模,线性规划,intlinprog,0-1规划]categories:[学习,数学建模]index_img:https://picture-......
  • 每日一题【20200726】
    title:每日一题【20200726】excerpt:第五天建模打卡tags:[数学建模,线性规划,intlinprog,0-1规划,匈牙利算法]categories:[学习,数学建模]index_img:http......
  • day07 方法重写&super、this、static关键字&JVM的类加载顺序题目
    day07方法重写1)重写发生在子父类当中2)方法名、参数列表、返回值均相同3)重写的方法,方法体或者访问控制修饰符不同4)子类方法的访问权限不能缩小,比如父类是int,子类重写权......
  • 每日一题【20200722】
    title:每日一题【20200722】excerpt:第一天建模打卡tags:[数学建模,线性规划,linprog]categories:[学习,数学建模]index_img:https://picture-store-reposi......
  • 玩转树莓派[07开机后将 IP 地址信息自动推送到微信]
    title:玩转树莓派[07:开机后将IP地址信息自动推送到微信]excerpt:最烦每次更换IP,这下好了tags:[raspberry,微信,server酱,ip发送]categories:[学习,raspber......
  • P1077 [NOIP2012 普及组] 摆花
    P1077首先二维数组的DP比较好想,设f(i,j)表示前i种花摆了j盆的方案数,方程为\(f(i,j)=\sum_{k=0}^{a[i]}f(i-1,j-k)\)代码如下:#include<bits/stdc++.h>usingn......
  • RTX 3090/3080/3070正式发布!游戏从今天起腾飞
    ‍北京时间9月2日凌晨,NVIDIA正式发布了全新一代基于Ampere安培架构的GeForceRTX30系列显卡,首发包括RTX3090、RTX3080、RTX3070三款型号。NVIDIA宣称,新一代产品号称实现......