有趣的跳跃,求大神!

  • 一个长度为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


一叶飘零丶
浏览 8219回答 5
5回答

青春灬似水流年

#include<cmath>#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#include<stack>using namespace std;const int maxn=3110;int main(){        int n,a[maxn],b[maxn];     cin>>n;     if(n==1)     {         cout<<"Jolly";         return 0;     }     int tot=0;     memset(a,0,sizeof(a));memset(b,0,sizeof(b));     for(int i=1;i<=n;i++)     {         cin>>a[i];    }     for(int i=1;i<n;i++)     {         b[i]=fabs(a[i]-a[i+1]);         tot++;     }         sort(b,b+tot+1,less<int>());     for(int i=1;i<n-1;i++)     {         if(b[i]+1!=b[i+1])         {             cout<<"Not jolly";         return 0;     } } if(b[n-2]+1!=b[n-1])cout<<"Not jolly"; cout<<"Jolly"; return 0;}

从此蜕变

#include<cstdio>#include<algorithm>using namespace std;int abs(int n){if(n>=0)return n;else return -n;}int main(){int n,i,a[110000],b[100001],m=0,p=1;scanf("%d",&n);if(n==1){printf("Jolly");return 0;}for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++)b[++m]=abs(a[i+1]-a[i]);sort(b+1,b+m+1);for(i=1;i<=m;i++)if(b[i]!=p++){printf("Not jolly");return 0;}printf("Jolly");return 0;}

郭教兽

#include<cstdio>#include<algorithm>using namespace std;int abs(int n){if(n>=0)return n;else return -n;}int main(){int n,i,a[110000],b[100001],m=0,p=1;scanf("%d",&n);if(n==1){printf("Jolly");return 0;}for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++)b[++m]=abs(a[i+1]-a[i]);sort(b+1,b+m+1);for(i=1;i<=m;i++)if(b[i]!=p++){printf("Not jolly");return 0;}printf("Jolly");return 0;}

郭教兽

呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵啊哈哈哈哈哈哈哈哈哈哈
打开App,查看更多内容
随时随地看视频慕课网APP