是的,我正在学习CS并且已经在C中完成了一个实验室,它已经很顺利但我现在已经找到了一些似乎无法解决奖励分数的东西。我已经这样做了一两天,根本无法弄清楚完成这个的正确方法。
简介
到目前为止的任务摘要:
构建穿山甲游戏,计算机将问题和对象存储在树形结构中。游戏的工作原理如下:你想到一个对象,计算机试图通过问你一系列的“是/否”问题来猜测你在想什么。如果计算机猜对了,那就赢了。如果你设法愚弄它,你就赢了,但是你必须为计算机提供一个问题,让它能够在下一次正确猜测。这就是它的全部内容。
您最终得到的树结构示例(从左 - >右):
Tree
/
Is it made of wood?
\
Grass
/
Is it green?
\
Pangolin
/
Does it have a legs?
\
Computer
/
Is it larger than a microwave?
\
Laptop
/
Does it have a keyboard?
\
Desk
这是由以下结构构成的:
typedef struct node {
char* object_name; // object-name (which may be NULL)
char* question; // question (which may be NULL)
struct node *yesNode; // where if yes (NULL)
struct node *noNode; // where if no (NULL)
} node;
上述树存储为以下文件:
Is it green?
Does it have a legs?
Does it have a keyboard?
Desk
Is it larger than a microwave?
Laptop
Computer
Pangolin
Is it made of wood?
Grass
Tree
问题
奖金如下:
让您的程序获取任意数量的输入文件,并进行移植 他们在一起做一棵大树。与朋友交换文件 并获得大量无意义的问题。要做到这一点 您需要扫描重复的条目(您将无法执行此操作 完美,但它应该至少清除明显的重复和 以合理的方式将树木嫁接在一起。)
或总结:
获取两个树结构(或表示树结构的文件)并将它们合并在一起以生成更大的树,同时删除重复的结构。
我的问题:
我最好的主意:
但是这打破了树的结构,并且可能使游戏中断(比如第一棵树中的顶部问题是红色),第二棵树附着在no节点上,第二棵树中的所有项目都是红色的?
我的主要问题:
答案 0 :(得分:3)
我认为加入所有树的最简单方法是重新构建一个最小熵决策树,如下所示:
当谈到逻辑相同但语言不同的问题时......这是一个非常困难的自然语言问题。如果不进行任何语言分析,您可以做一些简单的事情,比如忽略大小写,标点符号和间距的问题字符串。