2014年1月3日 星期五

[UVA]Vito's family

CPE 10406、UVA 10041。









































解題觀念:


背景故事就跳過了。

這題主要就是說,Vito要搬新家,然後他要找一棟和她所有親戚距離總和最短的房子。

就等於是要找這些房子的"中點"在哪裡,叫他搬到那裏就對了~

( 注意:有些親戚的門牌會一樣,且兩者間的距離為絕對值。 )




解題步驟:

宣告整數n,為測資個數。親戚數量不會大於500,如果>500則break。

宣告整數d,為親戚房子數量,不會大於3000,如果>3000則break。

宣告整數m,存放中點位置;宣告整數sum,存放距離總和。

宣告陣列a[],其長度為親戚房子數量, 每個格子存放房子門牌號碼。

輸入完後,做排序( Array.sort() ),將號碼從小排到大,之後找出中點

進入for迴圈,將所有門牌號碼和中點相減,算出距離絕對值

再將距離相加後存放到sum,之後印出,結束後將sum初始化。


EX:

1
2 2 4

( 一組側資,兩個門牌號碼(兩棟房子)。 )

a = new int[2];a的陣列長度為2。

a[0] = 2;a[1] = 4。排序後==>[ 2 , 4 ]。

m = a[2/2] = a[1] = 4。

sum + = | a[0] - 4| = 2;sum = 2。

sum+ = |a[1] - 4| = 0;sum = 2+0 = 2。

印出 2 。


By  小K

沒有留言:

張貼留言