街區最短路徑問題

2022-08-20 00:48:12 字數 1207 閱讀 9393

描述 

乙個街區有很多住戶,街區的街道只能為東西、南北兩種方向。

住戶只可以沿著街道行走。

各個街道之間的間隔相等。

用(x,y)來表示住戶坐在的街區。

例如(4,20),表示使用者在東西方向第4個街道,南北方向第20個街道。

現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。

求現在這個郵局應該建在那個地方使得所有住戶距離之和最小;

輸入第一行乙個整數n<20,表示有n組測試資料,下面是n組資料;

每組第一行乙個整數m<20,表示本組有m個住戶,下面的m行每行有兩個整數0m行後是新一組的資料;

輸出每組資料輸出到郵局最小的距離和,回車結束;

樣例輸入23

1 12 1

1 25

2 9 

5 20

11 9

1 11 20

樣例輸出244

要是一點到n點的距離和最小,則此點的x座標為n點x座標的中位數,y座標為n點y座標的中位數

1 #include 2 #include 3

4int

main()

2526

for(i=0;i1;i++)33}

34}3536

/*if(m%2==1)

37x_zhong=x[m/2];

3839

else

40x_zhong=(x[m/2]+x[m/2-1])/2.0;

*/41

42 x_zhong=x[m/2]; //

這裡中位數求法很有問題,如果m為偶數,中位數應該是中間兩個數的平均值

4344

for(i=0;i1;i++)51}

52}5354

/*if(m%2==1)

55y_zhong=y[m/2];

5657

else

58y_zhong=(y[m/2]+y[m/2-1])/2.0;

*/59

60 y_zhong=y[m/2

];61

62 sum=0

;

63for(i=0;i)

69 printf("

%.0lf\n

",sum);70}

7172

return0;

73 }

街區最短路徑問題

描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。求現在這個郵局應該建在那個地方使得...

街區最短路徑問題

描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。求現在這個郵局應該建在那個地方使得...

街區最短路徑問題

描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。求現在這個郵局應該建在那個地方使得...