因爲它是有趣的問題,我寫了小JS腳本只是爲了好玩:http://jsfiddle.net/Ufbbt/
var from = 'CO';
var to = 'WY';
var thru = ['ID', 'OR', 'UT', 'WA'];
var globalCount = 0;
var doStuff = function(currState, states, str) {
if (states.length == 0) {
if (inArray(to, statesDesc[currState])) {
console.log(str + '->' + to);
globalCount++;
}
return;
}
for (var i = 0, len = states.length; i < len; i++) {
if (inArray(states[i], statesDesc[currState])) {
var newStates = states.slice(0); // clone original array
var newCurrState = newStates.splice(i, 1)[0];
doStuff(newCurrState, newStates, str + '->' + newCurrState);
}
}
}
var inArray = function(what, where) {
for (var i = 0, len = where.length; i < len; i++) {
if (what == where[i])
return true;
}
return false;
}
// Now, initial execute
doStuff(from, thru, from);
console.log(globalCount + ' route(s) found');
var statesDesc = {
AK: ['WA'],
AL: ['TN','GA','FL','MS'],
AR: ['MO','TN','MS','LA','TX','OK'],
AZ: ['UT','CO','NM','CA','NV'],
CA: ['OR','NV','AZ','HI'],
CO: ['WY','NE','KS','OK','NM','AZ','UT'],
CT: ['MA','RI','NY'],
DC: ['MD','VA'],
DE: ['PA','NJ','MD'],
FL: ['GA','AL'],
GA: ['NC','SC','FL','AL','TN'],
HI: ['CA'],
IA: ['MN','WI','IL','MO','NE','SD'],
ID: ['MT','WY','UT','NV','OR','WA'],
IL: ['WI','IN','KY','MO','IA'],
IN: ['MI','OH','KY','IL'],
KS: ['NE','MO','OK','CO'],
KY: ['OH','WV','VA','TN','MO','IL','IN'],
LA: ['AR','MS','TX'],
MA: ['NH','RI','CT','NY','VT'],
MD: ['PA','DE','DC','VA','WV'],
ME: ['NH'],
MI: ['OH','IN','WI'],
MN: ['WI','IA','SD','ND'],
MO: ['IA','IL','KY','TN','AR','OK','KS','NE'],
MS: ['TN','AL','LA','AR'],
MT: ['ND','SD','WY','ID'],
NC: ['VA','SC','GA','TN'],
ND: ['MN','SD','MT'],
NE: ['SD','IA','MO','KS','CO','WY'],
NH: ['ME','MA','VT'],
NJ: ['NY','DE','PA'],
NM: ['CO','OK','TX','AZ','UT'],
NV: ['ID','UT','AZ','CA','OR'],
NY: ['VT','MA','CT','NJ','PA'],
OH: ['PA','WV','KY','IN','MI'],
OK: ['KS','MO','AR','TX','NM','CO'],
OR: ['WA','ID','NV','CA'],
PA: ['NY','NJ','DE','MD','WV','OH'],
RI: ['MA','CT'],
SC: ['NC','GA'],
SD: ['ND','MN','IA','NE','WY','MT'],
TN: ['KY','VA','NC','GA','AL','MS','AR','MO'],
TX: ['OK','AR','LA','NM'],
UT: ['ID','WY','CO','NM','AZ','NV'],
VA: ['MD','DC','NC','TN','KY','WV'],
VT: ['NH','MA','NY'],
WA: ['AK','ID','OR'],
WI: ['MI','IL','IA','MN'],
WV: ['PA','MD','VA','KY','OH'],
WY: ['MT','SD','NE','CO','UT','ID']
}
a)你打算使用什麼平臺 - GIS軟件,數據庫查詢,編程語言? b)你知道嗎,路線中的第一個狀態是什麼? – user1702401
這似乎是相當棘手的任務,在某些情況下,你不能得到單一的結果。例如,路線可以是:阿拉巴馬州田納西州密西西比州阿肯色州或阿拉巴馬州密西西比州田納西州阿肯色州。另一個例子:當你有阿拉巴馬州,田納西州,密西西比州時,你不能說出哪個州的路線開始,哪裏結束。 – user1702401
@ user1702401,我用php開發,正如我在文章中提到的,開始和結束點都是已知的。我開始認爲考慮到鄰接關係,這是不可能的。 –