cpe練習筆記 UVa10038 Jolly Jumpers
原文題目
題目大意
一個序列由n>0的整數組成,稱作 jolly jumper 如果兩個相依數之間的差值取絕對值使得整串數列有值1~n-1
輸出要求
判斷是否為 jolly jumper 輸出 "Jolly" 或是 "Not jolly"
輸入範例
4 1 4 2 3
5 1 4 2 -1 6
輸出範例
Jolly
Not jolly
注意
由於此題目Input不會告知有多少筆資料所以要下面的方法來判斷是否該停止接收
※EOF=end of file
程式碼
題目大意
一個序列由n>0的整數組成,稱作 jolly jumper 如果兩個相依數之間的差值取絕對值使得整串數列有值1~n-1
輸出要求
判斷是否為 jolly jumper 輸出 "Jolly" 或是 "Not jolly"
輸入範例
4 1 4 2 3
5 1 4 2 -1 6
輸出範例
Jolly
Not jolly
注意
由於此題目Input不會告知有多少筆資料所以要下面的方法來判斷是否該停止接收
while(scanf("%d",&num)!=EOF)
程式碼
#include <stdlib.h>
#include <stdio.h>
int main(){
int i,j,tmp,isJolly;
int num,datas[3000]={0};
//接收資料
while(scanf("%d",&num)!=EOF){
for(i=0;i<num;i++){
scanf("%d",&datas[i]);
}
//計算差值
for(i=1;i<num;i++){
datas[i-1]=abs(datas[i]-datas[i-1]);
}
datas[num-1]=9999;//用原陣列存放差值,最後一個空間不要了
//排序
for(i=0;i<num;i++){
for(j=1;j<num;j++){
if(datas[j]<datas[j-1]){
tmp=datas[j];
datas[j]=datas[j-1];
datas[j-1]=tmp;
}
}
}
//資料驗證
isJolly=1;
for(i=1;i<num-1;i++)
if(datas[i]-datas[i-1]!=1)
isJolly=0;
//處理單一筆差值
if(num==2)
if(datas[0]!=1)
isJolly=0;
//輸出
if(num==1){
printf("Jolly\n");
}
else if(isJolly){
printf("Jolly\n");
}
else{
printf("Not jolly\n");
}
}
}
留言
張貼留言