OpenJudge 1.6.7 有趣的跳跃

07:有趣的跳跃总时间限制: 1000ms 内存限制: 65536kB
描述一个长度为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)就有"有趣的跳跃"并且任何只包含单个元素的序列一定存在“有趣的跳跃”.要求你写一个程序判定给定序列是否存在“有趣的跳跃” 。
思路用两个单独的for循环,和两个嵌套for循环完成.用来[输入][排序][输出Jolly或Not jolly]
代码实现

点击查看代码#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++){cin>>a[i];//使用for循环输入列表a } 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;//结束程序}
【OpenJudge 1.6.7 有趣的跳跃】

    经验总结扩展阅读