Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TreeNode的Tic-Tac-Toe解决方案_Java_Tree - Fatal编程技术网

Java TreeNode的Tic-Tac-Toe解决方案

Java TreeNode的Tic-Tac-Toe解决方案,java,tree,Java,Tree,我正在创建一个tic-tac-toe程序,它是player vs-pc。 电脑需要计算出他能做的最好的动作,然后去做。 要计算每一个可能的步骤,TreeNode听起来很完美,但问题是在每一个级别之后,儿童的数量越来越少,例如: ^意思是空的 ^ X O O O X ^ X ^ 对于这种情况,我需要一棵有3个孩子的树 但在这种情况下: ^ ^ ^ ^ X ^ ^ ^ ^ 我需要一棵有8个孩子的树。 那么,有可能改变儿童的数量吗? 当我问这个问题时,我认为给不想要的孩子设置一个空值是一个解决方

我正在创建一个tic-tac-toe程序,它是player vs-pc。 电脑需要计算出他能做的最好的动作,然后去做。 要计算每一个可能的步骤,TreeNode听起来很完美,但问题是在每一个级别之后,儿童的数量越来越少,例如:

^意思是空的

^ X O 
O O X
^ X ^
对于这种情况,我需要一棵有3个孩子的树 但在这种情况下:

^ ^ ^
^ X ^
^ ^ ^
我需要一棵有8个孩子的树。 那么,有可能改变儿童的数量吗?
当我问这个问题时,我认为给不想要的孩子设置一个空值是一个解决方案,但是你有更好的建议吗?或者甚至树也不是适合我的最佳选择?

是的,这很容易实现。与其使用数组来保存节点的子节点,不如使用大小可变的实现,如或


或者,您甚至可以只使用一个数组,但将子元素的数量作为参数传递给
TreeNode
的构造函数。您知道如果
TreeNode
a
有8个子节点,那么每个子节点最多有7个子节点。

您应该实现自己的树对象,它由包含子节点数组的节点组成。通过这种方式,您还可以实现一种Euristic方法,从最佳解决方案中获得一个近似距离度量。

如果它始终是一个3x3网格,为什么不简单地强制使用一个数组?它是9x9,您无法自行计算出最佳值move@gsingh2011因为那不是重点我只是做了,我看到了你的答案。无论如何,谢谢!=]