csp中間數java
阿新 • • 發佈:2018-12-14
201612-1
試題名稱: 中間數 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述 在一個整數序列a1, a2, …, an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在一個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。 給定一個整數序列,請找出這個整數序列的中間數的值。 輸入格式 輸入的第一行包含了一個整數n,表示整數序列中數的個數。 第二行包含n個正整數,依次表示a1, a2, …, an。 輸出格式 如果約定序列的中間數存在,則輸出中間數的值,否則輸出-1表示不存在中間數。 樣例輸入 6 2 6 5 6 3 5 樣例輸出 5 樣例說明 比5小的數有2個,比5大的數也有2個。 樣例輸入 4 3 4 6 7 樣例輸出 -1 樣例說明 在序列中的4個數都不滿足中間數的定義。 樣例輸入 5 3 4 6 6 7 樣例輸出 -1 樣例說明 在序列中的5個數都不滿足中間數的定義。 評測用例規模與約定 對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
package ddd; import java.util.*; public class Mainn { static Scanner scanner=new Scanner(System.in); static void jiangyou() { int n=scanner.nextInt(); int[] x=new int[n]; for(int i=0;i<n;i++) { x[i]=scanner.nextInt(); } Arrays.sort(x); int temp=0; if(n%2==0) { int sum=x[n/2-1];//因為是從0開始的序號,不可以直接n/2 for(int i=0;i<n;i++) { if(x[i]==sum) { temp++; } } if(temp%2==0) { System.out.println(sum); } else System.out.println(-1); } else { int sum=x[(n-1)/2]; for(int i=0;i<n;i++) { if(x[i]==sum) { temp++; } } if(temp%2!=0) { System.out.println(sum); } else System.out.println(-1); } System.out.println(); } public static void main(String[] args) { jiangyou(); } }