先说说2048游戏的规则:
开始的时候空格中会出现两个数字(只能为2或者4),用户可以选择上下左右键进行移动,数字们整体沿着方向移动,中间不存在空格,如果相邻的两个数字相等,那么合并至沿着方向的后一个,更新最大值,总分数加上新出现的数字。当出现2048,Win。或者没有空格了,Lose。
基本就是一个按照思路的模拟题,没有什么难度。不过我想写一个自动求解的程序,但是bfs搜索的话解空间太庞大,没有想到好的方法,有路过的牛人还请指点。
//2048 by Tach
#include<iostream>
#include<string>
#include<ctime>
#include<cstring>
#include<conio.h>
#include<iomanip>
#include<algorithm>
using namespace std;
int g[4][4];
int vis[4][4];
int maxNum=0,score=0;
void print() //打印图案
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
cout<<setw(5)<<g[i][j];
cout<<endl<<endl;
}
cout<<"Max:"<<maxNum<<" "<<"Score:"<<score<<endl;
}
void init()
{
for(int i=0;i<4;i++)
for