0

これは私の宿題からの一般的な質問です。アイデアや疑似コードを求めているだけです。

C++ を使用して三目並べゲームを作成しているとします。私がすでに持っているのはNode、現在のゲーム ボードの状態を表す const メンバー データと、考えられるすべての次のステップの状態を含む他のノードへのポインターの const 配列を含むクラスです。したがって、これはノードが重複していない有向グラフになります (すべてのノードには独自のゲーム状態があります)。

そのようなグラフを生成しようとしているときに問題が発生しました。すべてのデータメンバーが含まれているため、再帰を使用する必要があるようですNodeクラスは const であるため、それらを変更する方法はありません。そして、ノードを複製せずにそのようなグラフを一度に生成する良いアイデアを思い付くことはほとんどできません (つまり、ツリーにするのは簡単ですが、多くのスペースと時間を浪費します.)。1 つの助けになるかもしれないのは、2 つの異なるゲーム状態を比較できることです<set>。.

したがって、誰かがこれについて何か考えを持っている場合は、あなたの考えや疑似コードを自由に書き留めてください。ありがとうございました

4

1 に答える 1

0

存在を確認する必要があると思います:

std::set< Node > checked_node;

bool isNodeChecked( Node ){
    return checked_node.find( Node )!=checked_node.end();
}

;で作業するには、operator =and operator <for のようなものをオーバーロードする必要があります。std::setclass Node

また、std::unordered_map動作する可能性があります。

(私には、三目並べのステータスは 0 から 3^9 までの負でない整数で表すことができるように思えます。この方法では、std::set で十分ですが、追加のエンコード デコード関数が必要です。

于 2013-02-16T06:06:44.783 に答える