OpenJudge 1.6.7 有趣的跳跃

1|007:有趣的跳跃

总时间限制: 1000ms 内存限制: 65536kB

1|1描述

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

1|2输入

一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。

1|3输出

一行,若该序列存在“有趣的跳跃”,输出"Jolly",否则输出"Not jolly"。

1|4样例输入

4 1 4 2 3

1|5样例输出

Jolly

1|6题意

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

1|7思路

用两个单独的for循环,和两个嵌套for循环完成.用来[输入][排序][输出Jolly或Not jolly]

1|8代码实现

点击查看代码
#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;//结束程序 }

__EOF__

本文作者Krlee
本文链接https://www.cnblogs.com/HANDMICRO/p/16796446.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   HANDMICRO  阅读(255)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
1
点击右上角即可分享
微信分享提示