乙個nn個元素的整數陣列,如果陣列兩個連續元素之間差的絕對值包括了[1,n-1][1,n−1]之間的所有整數,則稱之符合「歡樂的跳」,如陣列1 4 2 31423符合「歡樂的跳」,因為差的絕對值分別為:3,2,13,2,1。
給定乙個陣列,你的任務是判斷該陣列是否符合「歡樂的跳」。
每組測試資料第一行以乙個整數n(1 \le n \le 1000)n(1≤n≤1000)開始,接下來nn個空格隔開的在[-10^8−108,10^8108]之間的整數。
對於每組測試資料,輸出一行若該陣列符合「歡樂的跳」則輸出"jolly",否則輸出"not jolly"。
輸入 #1複製
4 1 4 2 3輸出 #1複製
jolly輸入 #2複製
5 1 4 2 -1 6輸出 #2複製
not jolly1≤n≤1000
分析:也不難,先把相鄰元素差的絕對值儲存起來,放到陣列b裡面,然後遍歷b,這裡採用桶排序的思想,設立乙個陣列c,若b[i]==5,則c[b[i]]++;
即c[5]++,這樣遍歷一遍,c中小於1000的數中,若有c[i]==0,則說明這個數沒有被訪問過,就說明不是jolly
這裡注意乙個細節,在執行c[b[i]]++之前,要判斷b[i]是不是1000以內,不然只開了1000大小的陣列c,無法執行類似於b[3000]這樣大小的資料,會越界,跑的時候會re,我就是遇到了這個問題,加上if(b[i]<1004)之後,就ac了,附上**:
#include#includeusing namespace std;
int n;
int a[1005];
int b[1005];
int c[1005];
int main()
int flag=1;
for(int i=1;iif(c[i]==0)
if(flag)
cout<<"jolly";
else
cout<<"not jolly";
return 0;
}
洛谷P1152 歡樂的跳
題目鏈結 題目描述 乙個n個元素的整數陣列,如果陣列兩個連續元素之間差的絕對值包括了 1,n 1 之間的所有整數,則稱之符合 歡樂的跳 如陣列1423符合 歡樂的跳 因為差的絕對值分別為 3,2,1。給定乙個陣列,你的任務是判斷該陣列是否符合 歡樂的跳 輸入格式 每組測試資料第一行以乙個整數n 1 ...
洛谷 P2678 跳石頭
原題 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 nn 塊岩石 不含起點和終點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達終點。為了提高比賽難度,組委會計畫移走一些岩石,使得選手們在比賽過...
洛谷P2678 跳石頭
一年一度的 跳石頭 比賽又要開始了 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 n 塊岩石 不含起點和終點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達終點。為了提高比賽難度,組委會計畫移走...