[プログラマー]旅行コース

2518 ワード

開始します。🌈


最初は12時間で解けましたハハハハ
実際、BFSというアイデアがすぐに浮かび上がり、最近はあまり名編を書いていないので、DFSに挑戦しました.結果は辛味🔥🔥🔥
私はもともと頑固で、どうしても捕まえて、解けるまで、
結局行程が少し不順でした
しかし、重要なのは、私が今まで解決した過程が、きっと私の能力値になることです.
実は、私は本当に多くのことを悟りました!思いがけないところでjavascript特性でエラーが発生しましたその間違いは7時間もうろうろしていたので、もっと彫ることができました.(解く過程で、もう一度解きます.😋)
だから今日はこれについて宣伝しますそれでは始めましょうか?!

解法


そう思います.
  • 両方解けるようですDFSで解けるでしょう
  • まずチケットの開始、到着データに基づいてグラフを作成します.△実は、これも私の頑固さです.順番に並べても問題ありません.
  • 「ICN」を起点としています.
  • バックグラウンド追跡を行います.resが票数より長ければ、戻ります.
  • の場合、可能なフルパスエンクロージャアレイallCasesに追加される.△ここで注意したいのは、私の設計にとって、これは最適な経路ではないかもしれないので、できるだけすべての数を抽出することです!参考にして、このように解いてはいけません.
  • 現在の開始点に対応するkey値の配列に移動します.コールdfsを抽出します.
  • 徹底探索が終われば,最終症例が集まった.
  • 並んで1つ吸って終わりました!
  • そうですね.
    私がずっと見逃していた部分はdeepCopyです
    私の記憶では、他の言語で似ていてもcopyは過小評価されない部分があります.
    ここではコピーが浅く、再帰を使うときはずっと低価格のコピーです!
    だから忘れた事を思い出したjavascriptでは、オブジェクト全体がオブジェクトタイプであり、元のタイプのように値だけをコピーするのではなく、アドレス値を参照します.
    このため,最終的にはDistrict Chingによりこの問題を解決した.△今回発見された深い複製の秘訣を解決します!
    12时间ぶりに解けたけど歪んだ仆の耻ずかしいハーモニー.見て役に立つことを望みます!

    コード#コード#💻

    const makeGraph = tickets => {
        const graph = {}
        tickets.forEach(([from, to]) => {
            graph[from] = (graph[from] === undefined) ? [to] : [ ...graph[from], to ]
        })
        return graph;
    };
    const dfs = (start, ticketCounts, graph, nowCase, allCases) => {
        if (nowCase.length > ticketCounts) return;
        nowCase.push(start);
        if (nowCase.length === ticketCounts + 1) allCases.push([ ...nowCase ])
        if (graph[start] !== undefined) {
            graph[start].forEach((now, idx) => {
                const graphStart = [ ...graph[start] ]
                graphStart.splice(idx, 1);
                const copiedGraph = { ... graph, [start]: graphStart }
                dfs(now, ticketCounts, copiedGraph, [ ...nowCase ], allCases);
            })
        }
        return allCases
    }
    
    const solution = (tickets) => {
        const nowCase = [];
        const allCases = [];
        const graph = makeGraph(tickets);
        dfs("ICN", tickets.length, graph, nowCase, allCases);
        const selectedOptimizedCase = allCases.sort()
        return selectedOptimizedCase[0];
    }

    終了時🎉


    結局頑固で時間がかかりましたが、
    この問題が大きくても小さくても、問題は解決した.
    他の人にとっては単純なコードですが、私は自分を誇りに思っています.李想!!!