博弈树(树的c实现)

时间:2019-01-11 14:12:55
【文件属性】:

文件名称:博弈树(树的c实现)

文件大小:5KB

文件格式:CPP

更新时间:2019-01-11 14:12:55

博弈树 数据结构 树 C语言

下棋属于一种博弈游戏,博弈过程可以用树(博弈树)来表示。假设游戏由两个人( A 和 B )玩,开始由某个人从根结点开始走,两个人轮流走棋,每次只能走一步, 下一步棋只能选择当前结点的孩子结点,谁先走到叶子结点为胜。例如,对于下图所示的博弈树,若 A 先走,可以选 f , B 若选 h ,则 A 选 j 胜。 编写一程序,让计算机和人下棋。当计算机走下一步时,可以根据以下情况决定下一步: (1) 若存在可以确保取胜的一个孩子结点,则选择该结点作为下一步; (2) 若存在多个可以确保取胜的孩子结点,则选择其中高度最小的结点作为下一步(若有多个选择,则选最左边的结点); (3) 若不存在可以确保取胜的一个孩子结点,则选择高度最大的孩子结点作为下一步(若有多个选择,则选最左边的结点); 例: (下面的黑体为输入) (a,(b,(x)),(c,(d),(e,(g),(h)),(f))) a b x c d e g h f Who play first(0: computer; 1: player )? 1 player: c computer: d Sorry, you lost. Continue(y/n)? y Who play first(0: computer; 1: player )? 1 player: x illegal move. player: b computer: x Sorry, you lost. Continue(y/n)? y Who play first(0: computer; 1: player )? 0 computer: c player: f Congratulate, you win. Continue(y/n)? n


网友评论

  • 有点小问题代码
  • 感觉不错哦
  • 感谢大佬!