0

他の同様のスレッドを調べましたが、答えが見つかりませんでした。

私はJavaで演習を行っています。それはちょっと楽しいゲームで、毎ターン「よりスマート」になります。コンピューターは私が考えている動物を推測しようとします。ゲームは次のようになります。

ここに画像の説明を入力してください

問題は、2次元配列を使用して質問回答を格納したいということです。ただし、プログラムには無制限の質問と回答が含まれる可能性があるため、配列は動的にサイズ変更できないため、Arrayオブジェクトを使用してデータを格納することはできません。

したがって、実行時にオブジェクトを格納するのに適したArrayListクラスがあります。しかし、ここでは2次元配列リストを使用するべきではないと思います。このような状況にどのように対処しますか?

運動はまた私にヒントを与えます、私が望むなら私は「二分木」についてインターネットで見るかもしれないということです。私はそうしました、しかし私は私が理解していないいくつかの奇妙なことを見つけただけです。

4

5 に答える 5

2

多次元配列を使用するという考えに固執することもできますが、ヒントとしてバイナリツリーを使用してみてください。次の二分木を見ると、答えは16〜25(リーフノード)になり、それ以外はすべて質問になります。

したがって、一番上(ルート)から始めると、このノードは「動物には4本の足がありますか?」という質問になる可能性があります。答えが「はい」の場合は、ノード2に移動(移動)します。それ以外の場合は、ノード3に移動します。これは、ノード2の下のすべての葉ノードが4本の足を持つ動物であり、ノード3の下のすべての葉ノードが4本の足を持たない動物であることを意味します。足。

次に、リーフノードに到達するまで、ノード2または3をルートノードとして扱うプロセスを繰り返す必要があります。

于 2012-09-20T09:26:31.783 に答える
1

すべての問題と動物は、1 つのバイナリ ツリーに格納できます。質問内部ノードとして使用し、動物として使用します。各回答には 2 つの子孫 (ツリーの分岐は 2 =二分木) があり、動物がまだわかっていない場合は別の回答、または動物 (葉ノード) のいずれかです。

Java でツリーを表現する方法は別の問題です。次のクラスを使用してそれを行うことができます(ゲッター/セッター/コンストラクター/便利なメソッドを追加します):

public class Node {
   // add here other common attributes
   private Node parent;
}

public class Question extends Node {
   private String text;
   private Node yes;
   private Node no;
}

public class Animal extends Node {
   private String name;
}
于 2012-09-20T09:30:12.047 に答える
0

HashTable<QUESTION,ANIMAL> 動的に追加して、質問と動物の間の接続を保存することもできます。

Hashtable<String,string> ht = new HashTable<String,String>();
String animal;
//adding
ht["some question"] = "some animal";

//getting
if (ht["some question"] != null)
   animal = ht["some question"];
于 2012-09-20T09:19:44.563 に答える
0

Mapの任意の実装を使用して、動物の名前をキーとしてList、回答を値として保存できます。しかし問題は、この結果がアプリケーションを終了した後に存在しないことです。したがって、値を格納するデータベースについて考えてください。

于 2012-09-20T09:24:50.013 に答える
0

あなたの質問は私には少し紛らわしいので、これはあなたの質問に直接答えないかもしれません. 二分木について質問されたので、この回答をまとめています。このシナリオでの Binary Tree の適用可能性は疑問です。

バイナリ ツリーから始める場合は、まずバイナリ ツリーの概念と動作を学びます。簡単です。最大で2つのブランチを持つもの:)

ここに画像の説明を入力

画像参照

Java とプログラミングのことはしばらく忘れてください。これらのアプレットは、バイナリ ツリーの少し高度なバージョンであるバイナリ サーチ ツリーを表示します。

二分木デモル

二分木のデモ

次にプログラミングを考えます。読めなければ学べない。物事を理解するために何度も何度も読むようにしてください:)

これが実際の実装です。

二分木 - Java

于 2012-09-20T09:25:59.953 に答える