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

07:有趣的跳跃

时间:2022-10-16 17:45:28浏览次数:41  
标签:07 int 列表 序列 绝对值 跳跃 有趣

描述

一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一个程序判定给定序列是否存在“有趣的跳跃”。

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

样例输入

4 1 4 2 3

样例输出

Jolly

题意总结

 如果一个序列前仅当相邻元素的差的绝对值经过排序后正好是1到到(n-1)就有“有趣的跳跃”并且任何只包括单个元素的序列一定存在“有趣的跳跃”。要求你写一个程序判定给定序列是否存在“有趣的跳跃”

解题思路

先输入变量n,再用for循环输入列表a。接着用for循环把列表a变成绝对值再存入列表b。接着用冒泡排序去排序相邻两个数的差,交换位置。最后判断是否成立“有趣的跳跃”

代码实现

#include<bits/stdc++.h>
using namespace std;
int n,a[31000],b[31000],c,d;
int main(){
cin>>n;//输入变量n
for(int i=1;i<=n;i++){//使用for循环输入列表a
cin>>a[i];
}
for(int i=1;i<=n-1;i++){
b[i]=abs(a[i]-a[i+1]);//使用for循环把列表a变成绝对值存入列表b
}
for(int x=1;x<=n-1;x++){//冒泡排序
for(int i=1;i<=n-x-1;i++){
if(b[i+1]<b[i]){
swap(b[i],b[i+1]);//交换两个数位置
}
}
}
for(int i=1;i<=n-1;i++){//判断是否成立"有趣的跳跃"
if(b[i]!=i){
cout<<"Not jolly";
return 0;
}
}
cout<<"Jolly";
return 0;
}

标签:07,int,列表,序列,绝对值,跳跃,有趣
From: https://www.cnblogs.com/9494pys/p/16796360.html

相关文章