close

題目概要:

給定N個數字,如果相鄰2數字相後取減絕對值有在1~(N-1)裡面並且數字沒有重複,則為Jolly。

解題方向:

每行第一個數字為此行有多少數字(case)需要處理,其餘的為需要處理的數字。

1. 先判斷case是否為1,當case為1時則是Jolly。

2. 如case不是1,則取相鄰數字相減的絕對值存放到一個新的陣列裡,並且排序讓此陣列由小到大。

3. 用for迴圈比較相減的值是否有重複、是否有在1~(N-1)裡面,如果有在範圍裡並且無重複則為Jolly,反之為Not jolly。

程式碼:

//Java
import java.util.Scanner;
import java.util.Arrays;
class uva10038{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//有多少筆資料
int cases=sc.nextInt();
//輸入資料
int arr[]=new int[cases];
for(int i=0;i<arr.length;i++){
arr[i]=sc.nextInt();
}
boolean flag=true;
if(cases!=1){
//取相鄰數字相減的值,並取絕對值
int arrD[]=new int[cases-1];
for(int i=0;i<arr.length-1;i++){
arrD[i]=Math.abs(arr[i]-arr[i+1]);
}
//排序
Arrays.sort(arrD);
//檢查是否為1~(n-1)的值
for(int i=0;i<arrD.length;i++){
if(arrD[i]!=i+1){
flag=false;
break;
}
}
}
//結果輸出
if(flag) System.out.println("Jolly");
else System.out.println("Not jolly");
}
}
}
view raw uva10038.java hosted with ❤ by GitHub

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 a7069810 的頭像
    a7069810

    紀錄自己的程式人生

    a7069810 發表在 痞客邦 留言(0) 人氣()