問題タブ [recursive-backtracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
73 参照

c++ - 状態を保存しないにもかかわらず、数独ソルバーのこの実装はどのように機能しますか?

このリンクには、数独ソルバー アルゴリズムのバックトラッキング実装があります。最初に割り当てられた値が有効な出力を与えなかった場合に備えて、行番号 42 がセルに最初に割り当てられた値を別の値に戻す方法に注意してください。

ただし、そのセルの値だけを変更するだけで十分であることがわかりません。この呼び出しは他の多くの呼び出しをトリガーする可能性があり、配列 (行列) はメモリ (参照) によって渡されるため、再帰関数の呼び出しごとに行列 (grid[N][N]) のコピーを保持しません。したがって、再帰の基本ケースが戻ってくるまでに再帰の最初のフレームにも反映されるまで変更されます。

私によると、再帰関数を呼び出す直前に、 grid[N][N] の一時的なコピーを作成し、呼び出しが返されたらすぐに、同じフレーム内の次の関数が呼び出される前に復元する必要があります。

何かのようなもの

この詳細を理解するのを手伝ってください。

0 投票する
1 に答える
210 参照

php - 多次元配列のキーと値を含む文字列の変換 PHP

APIドメインの可用性の確認とドメイン登録にTPP を使用していますが、応答がstring.

  1. セッションを取得し、文字列を返すOK: t73484678463765

  2. ドメインチェック、戻り文字列woohoo123.nz: OK: Minimum=1&Maximum=2

  3. それ以外の場合は、文字列を返しますwoohoo123.nz: ERR: 102, This is message

帰る時は子供に持っているがOKその時持っていた時&ERR,

stringリターンをに変換したいarray

woohoo123.nz: OK: Minimum=1&Maximum=2以下の入出力などarray

入力woohoo123.nz: ERR: 102, This is messageと出力に続くarray

私はコードを再利用するほうが好きですがrecursivecallbackこの場合はよくわかりません。

0 投票する
2 に答える
4569 参照

java - 最長共通サブシーケンス Java (再帰的)

私が取り組んでいる問題はここにあります: http://practiceit.cs.washington.edu/problem/view/cs2/sections/recursivebacktracking/longestCommonSubsequence

基本的に、2 つの文字列が与えられ、最も長い共通部分列を見つけるように求められます。オンラインでソリューションを検索し、自分のソリューションと比較しましたが、コードにバグは見つかりませんでした。なぜまだうまくいかないのだろうか。

また、再帰的な方法を使用してこの問題を解決するように依頼されました

これが私のコードです:

そして、ここにすべてのテストケースがあります:

返される呼び出し値

「ABCDEFG」、「BGCEHAF」、「BCEF」

「彼女は売る」、「貝殻」、「貝殻」

"12345"、"54321 21 54321" "123"

「やんちゃ先生」「おいしいもも」「えちえちえちえち」

「マーティ」「ヘレン」「」

""、"ジョー" ""

「スージー」「」「」

「ACGGTGTCGTGCTA」、「CGTTCGGCTATCGTACGT」「CGGTTCGTGT」

私のコードでは、すべてのテスト ケースで StackOverFlow を取得しました。

0 投票する
1 に答える
1373 参照

java - 再帰的バックトラッキング makeChange

再帰バックトラッキングを使用して、ペニー (1 セント)、ニッケル (5 セント)、ダイム (10 セント)、およびクォーター (25 セント) を使用して、特定の金額を変更するすべての方法を見つけるメソッド makeChange を記述します。

たとえば、37 セントを両替する場合は、次のように使用できます。

  • 1四半期
  • 1 ダイムと 2 ペニー
  • 3 ダイムと 7 ペニー
  • または他の組み合わせ。

メソッドは 1 つのパラメーターを受け入れる必要があります。変更するセントの金額です。

メソッドの出力は、1 行に 1 つずつ、合計するとその金額になる各タイプのコインのすべての組み合わせのシーケンスである必要があります。

たとえば、クライアント コードに次の呼び出しが含まれていたとします。

生成される全体的な出力は次のようになります。

この問題を解決するための重要な洞察は、硬貨の各額面 (ペニー、ニッケルなど) を見て、その硬貨のすべての可能な数 (1 ペニー、2 ペニー、...、28 ペニー) を試して何がわかるかという概念です。その選択から始まる組み合わせを作ることができます。たとえば、上記の出力では、最初に 3 ペニーで始まるすべての組み合わせが表示され、次に 8 ペニーで始まるすべての組み合わせが表示されます。

バックトラックには一連の選択肢の調査が含まれるため、コード内で何らかの方法でコインの種類を表す必要があります。処理のために、すべてのコインの額面値のリストを保持することをお勧めします。さまざまなコインの値を処理するときに、このリストの内容を変更できます。以下のテンプレートは出発点です (コピーしてコード テキスト ボックスに貼り付けて開始できます)。

メソッドに渡された変更の量は負ではないと考えるかもしれませんが、100 を超える可能性があります。

だからここに私のコードがあります:

そして、makeChange(28) の呼び出しに対するその出力:

...(何百行もの出力があります)

重複した出力が生成される理由を教えてもらえますか? どうもありがとう!