上一篇介紹了Jolly Jumpers,這題講了判斷是不是Jolly Jumpers,也就是輸入一個數字N,並且左邊的數字減右邊的數字的絕對值範圍會在1~N-1內,並且都不會重複,換句話說就是1~N-1範圍內的每個數字都會出現在答案理,這樣就是Jolly Jumpers。
今天講解的題目是Vito'sfamily
先附上程式碼:
import java.util.;
import static java.lang.System.;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int C=sc.nextInt();
for(int x=0;x<C;x++){
int A=sc.nextInt();
int arr[]=new int[A];
for(int i=0;i<A;i++){
arr[i]=sc.nextInt();
}
Arrays.sort(arr);
int D=0;
for(int i=0;i<A;i++){
D+=Math.abs(arr[i]-arr[A/2]);
}
System.out.println(D);
}
}
}
};
這題簡單來說就是要找出中位數,並輸出中位數減去其他數的總和,因為中位數跟其他數相減的總合會最小,一開始先輸入一個C當作有幾題,在輸入一個A當作一題裡面有幾個數字,接下來就是使用迴圈跟陣列把輸入的數字寫進去,然後先排序,這樣找出中位數會比較方便,之後只需要把每個數都減掉arrA/2再加總就可以了,這題只要把總共的幾個的數/2就可以拿到中位數的位子了。
今天的講解就到這裡。
明天也是新的題目,會介紹Hashmat the brave warrior ,繼續加油!