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。
程式碼:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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"); | |
} | |
} | |
} |
文章標籤
全站熱搜