c++ - 井字棋的阶乘数组

标签 c++ logic

我目前正在尝试自学 C++ 和一般编程。因此,作为一个初学者项目,我正在制作一种遗传算法,为井字游戏创建最佳人工智能。我没有参加任何编程类(class),所以这不是家庭作业。我只是对人工智能非常感兴趣。

所以我试图创建一个阶乘的多维数组,在我的例子中是 9! 。例如,如果您做了 3 个之一!它将是 array[3][6] = { {1, 2, 3}, {1, 3, 2}, {2, 3, 1}, {2, 1, 3}, {3, 2, 1 }, {3, 1, 2}}。基本上3个!或者 3*2*1 是您可以按顺序排列 3 个数字的方式数量。

我认为解决方案应该很简单,但我一直在尝试找出如何提出一个简单的解决方案。我尝试过交换它们,尝试将它们向右移动,增加等等......有效的方法是显而易见的,我不知道如何对它们进行编码。

因此,如果您知道如何解决该问题,那就太好了。如果能给出编码格式就更好了。任何帮助表示赞赏。

我也在 C++ 中编码。

最佳答案

您可以使用STL的next_permutation函数

http://www.cplusplus.com/reference/algorithm/next_permutation/

关于c++ - 井字棋的阶乘数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628782/

相关文章:

C++子串多字节字符

c++ - 使用 C++ constexpr 对 N 位字进行位反转

python - 将两个数组的每个元素相加

c - 凌乱的代码从下一个元素中删除了第一位追加

mysql - 如何获得最后一条和倒数第二条记录。?以及如何在子查询中使用它。?

c++ - CMake 无法链接到 vcpkg 库

c++ - argv[1] 给出段错误

c++ - win32 C++ 上的按钮样式

ios - 根据时间戳计算动画中风开始?

c - 在 C 中生成 n 个字母组合的总数