これは問題のステートメントです一連のチケットを並べ替える
出発と目的地のスタックには多数のチケットがあります。あなたは出発都市と目的地都市を与えられます。あなたのルートをどのようにスタックから見つけることができますか? これは
"use strict";
function app(){
var stack = [];
var one = new Ticket('London', 'NYC');
var two = new Ticket('Barcelona', 'Athens');
var three = new Ticket('Rio', 'ND');
var four = new Ticket('NYC', 'Barcelona');
var five = new Ticket('Athens', 'Rio');
var six = new Ticket('ND', "Lahore");
stack.push(one);
stack.push(two);
stack.push(three);
stack.push(four);
stack.push(five);
stack.push(six);
var res = sortDestinations(stack, 'London', 'Lahore');
for(var city in res){
console.out(res[city]);
}
}
function Ticket(departure, destination){
this.departure = departure;
this.destination = destination;
}
Ticket.prototype.getDeparture = function(){
return this.departure;
}
Ticket.prototype.getDestination = function(){
return this.destination;
}
function sortDestinations(stack, dep, dest){
var map = {};
for(var i= 0; i<stack.length; i++){
var ticket = stack.pop();
map[ticket.getDeparture()] = ticket.getDestination();
}
var res = [];
var curr = dep;
res.push(curr);
while(true){
if(curr == dest) {
break;
}
var next = map[curr];
res.push(next);
curr = next;
}
}
app();
このプログラムは無限ループに入り、私の解決策です。私がデバッグすると、curr変数が定義されていないことがわかります。誰かが問題を解決するのを助けることができますか?私はJavascriptの新しいランクです。
一つの問題は、 'であり、あなたのループではありません私はあなたがそれを期待していると思うことをしています。 – httpNick
チケットの任意のセットに対して、解決策または多くの解決策が存在しない可能性があります。最短の解決策(チケット数または地理的距離による)はNP困難です。どのくらいそれを考慮に入れたいですか? – danh
@ダン問題は解決策が存在することを期待しています。 –