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 有趣的跳躍】

    經驗總結擴展閱讀