- 博客(5)
- 收藏
- 关注
原创 C++蒙特卡洛树算法实现五子棋AI
1.中心邻域搜索:根据启发式信息,每一步棋子应当选择与对手上一步棋子周围的一步,于是可以只搜索对方上一步周围的后继状态。2.必胜状态:如果已经能一步走成必胜局面,直接走这一步,或者一个后继状态对应的对手所有后继状态都是是白的,则这步必胜。3.判断棋盘状态:使用std::set(平衡树),也可以使用hash算法。Tips:调整select_num和sta_num可以让AI获得不同效果。随机的对当前局面进行后续状态模拟,根据模拟结果决定下一步行动。2.小范围可以使用博弈思想打表或者暴力查找必胜状态。......
2022-08-13 23:17:03 3686
原创 八数码难题( A*算法详解,附题目链接 )
经典八数码问题,给一个3*3的方阵,上面写着0~8的数字,求把方阵变换成另一个方阵所需最小步数题目链接:八数码难题 洛谷P1379考虑暴力搜索,一共有9的9次方种状态,超时A*算法:相比于盲目搜索,每次朝着离目标状态最接近的方向搜索定义估价函数 f(n)= h(n)+ g(n)我们要搜索最小步数,因此我们希望 f(n)最小,h(n)是启发函数,是人为构造的,表示当前状态距离目标状态预期需要的最小步数,而 g(n)表示从初始状态到目前走了多少步数,h(n)经过思考后,在本题中.
2021-10-01 14:23:04 2885
原创 A*算法 c++实现(可视化)
具体实现参考下列代码↓ ↓#include<iostream>#include<queue>#include<utility>#define mp(x,y) make_pair(x,y)#include<cmath>#include<cstdio>#include<map>#include<windows.h>using namespace std;int n,m;int mp[25][.
2021-09-27 23:04:15 493
原创 c++ 五子棋(控制台实现)
主要思路:函数分别实现多个功能,多个窗口代码如下 ↓ ↓#include<iostream>#include<windows.h>#include<conio.h>using namespace std;char g[15][15];void init_window(int gamer); //初始化窗口void game_window(int gamer); //游戏窗口void print_board(int game..
2021-09-22 22:42:58 356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人