資源簡介
假設有一個縣醫療救護中心有一些救護車為全縣服務,如果這些救護車平時都放置在縣城,那么當偏遠地區病人需要緊急運往醫院時就不能及時到達現場。所以需要在各鄉鎮及村莊建立緊急醫療救護站,分散放置這些救護車,以便盡可能使得場全縣任何地方有病人時可以在20分鐘內到達現。假設一個救護站配備一輛救護車,司機隨時值班,需要時即可使用。
1. 設救護站可以設在各鄉鎮及村莊,那么最少需要設置多少救護站可以使得所有人口位于救護車20分鐘車程能夠覆蓋的范圍內?給出各救護站位置。如果救護站只能位于鄉(鎮)所在地,結果怎樣?
2. 假設共有10輛救護車,怎樣設置救護站的位置可以使得盡可能多的人口位于救護車20分鐘車程能夠覆蓋的范圍內?能覆蓋所有人口嗎?如果不能,多少人不能被覆蓋?如果救護車的數量為7輛,再次回答上述問題。

代碼片段和文件信息
package?xiong;
import?java.text.DecimalFormat;
import?java.util.ArrayList;
import?java.util.List;
/**
?*?類詳細描述:專門打印最近距離的矩陣,和0-1矩陣
?*?
?*?@ClassName?TestMainIO
?*?@author?劉群
?*?@date?2015-12-30?下午4:28:21
?*/
public?class?Array_Floyd?{
/**?
?*?@Fields?Length?:?數組長度
?*/?
static?int?Length?=?53;
/**?
?*?@Fields?Distance?:?判定范圍,兩城鎮之間,大于20即為不覆蓋,小于則覆蓋
?*/?
static?int?Distance?=?20;
/**?
?*?@Fields?A?:?0-1矩陣,可達為1,不可達為0
?*/?
static?int[][]?A?=?new?int[Length][Length];
/**?
?*?@Fields?point?:?類似0-1矩陣,只是值是truefalse
?*/?
static?boolean[][]?point?=?new?boolean[Length][Length];
/**?
?*?@Fields?nums?:?記錄每個點可以到達多少個點
?*/?
public?static?int[]?nums?=?new?int[Length];
/**?
?*?@Fields?list?:?記錄每一條路徑的時候所用的
?*/?
public?static?List?list?=?new?ArrayList();
/**?
?*?方法簡述:main方法
?*?@param?args?
?*/
public?static?void?main(String[]?args)?{
Data?data?=?new?Data();
data.initGrp();
//從data類中獲取數據
double[][]?G?=?data.getGrp();
double[][]?Dis?=?floyd(G?Length);
//printG(G?Length);
// printG(Dis?Length);
// System.out.println(“============================“);
// initA(Dis?Length);
initA(G);
printG(A?Length);
}
public?static?int[][]?initA(double[][]?G)?{
char?ch?=?‘A‘;
for?(int?i?=?0;?i?
for?(int?j?=?0;?j? if?(G[i][j]?!=?1000)?{
A[i][j]?=?1;
}else?{
A[i][j]?=?0;
//System.out.println(“(“+i+““+j+“)“);
}
}
}
return?A;
}
/**?
?*?方法簡述:生成0-1矩陣
?*?@param?G?最近距離的矩陣
?*?@param?n?矩陣的寬度
?*/
public?static?int[][]?initA(double[][]?G?int?n)?{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? if?(G[i][j]?>?Distance)?{
A[i][j]?=?0;
}?else?{
A[i][j]?=?1;
}
}
}
return?A;
}
/**?
?*?方法簡述:?初始化nums數組
?*/
public?static?void?initNums()?{
for?(int?i?=?0;?i? nums[i]?=?-1;
}
}
/**?
?*?方法簡述:打印數組,調用可以在控制臺輸出最近距離的那個矩陣
?*?@param?G?數組
?*?@param?n?數組長度
?*/
public?static?void?printG(double[][]?G?int?n)?{
DecimalFormat?df?=?new?DecimalFormat(“#.00“);
for?(int?i?=?0;?i? System.out.print(i?+?“:“);
for?(int?j?=?0;?j? System.out.print(j+“:“+df.format(G[i][j])?+?“?“);
if?(j?==?n-1)?{
//System.out.print(“\nG[i][j]“+52?+?“\n“);
}
}
System.out.println();
}
}
/**?
?*?方法簡述:打印整型的那個數組,用于打印0-1矩陣
?*?@param?G
?*?@param?n?
?*/
public?static?void?printG(int[][]?G?int?n)?{
char?ch?=?‘A‘;
int?count?=?1;
for?(int?i?=?0;?i? int?k?=?0;
if?(i<18)?{
System.out.print((ch++)+“:“);
}else?{
System.out.print((count++)+“:“);
}
for?(int?j?=?0;?j? System.out.print(G[i][j]?+?““);
if?(G[i][j]?==?1)?{
k++;
}
}
System.out.print(“:“+(k));
System.out.println();
}
}
/**?
?*?方法簡述:最短路徑的生成
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-01-05?14:32??xiong\
?????文件???????56589??2016-01-03?22:46??xiong\1.txt
?????文件?????????575??2016-01-03?23:43??xiong\2.txt
?????文件?????????284??2016-01-05?10:06??xiong\4.txt
?????文件????????3967??2016-01-03?23:30??xiong\Array_Floyd.java
?????文件????????4711??2016-01-03?21:08??xiong\CopyOfArray_Floyd.java
?????文件???????40523??2016-01-03?23:36??xiong\Data.java
?????文件????????5151??2016-01-04?22:44??xiong\Exercise_1.java
?????文件????????6733??2016-01-03?23:37??xiong\Exercise_2.java
?????文件????????5723??2016-01-03?16:32??xiong\Exercise_3.java
?????文件????????5151??2016-01-05?10:00??xiong\Exercise_4.java
?????文件?????1331874??2016-01-05?12:24??xiong\緊急醫療救護站設置問題的題目.zip
- 上一篇:青鳥消防編程軟件
- 下一篇:kinect手勢追蹤
評論
共有 條評論