题解 luogu P1747 【好奇怪的游戏】

BFS大法好!!!

首先是确定12个走向

x[20]={-2,-2,-1,1,2,2,1,-1,2,2,-2,-2};

y[20]={-1,1,2,2,1,-1,-2,-2,2,-2,2,-2};

用一个二维BOOL数组去重,用两个数组分别表示棋盘X轴和Y轴。。

注意边界是50 * 50

和 1 * 1

然后就愉快的开始搜索

#include
using namespace std;
int x[20]={-2,-2,-1,1,2,2,1,-1,2,2,-2,-2};
int y[20]={-1,1,2,2,1,-1,-2,-2,2,-2,2,-2};//定义走向
int a[3][625000];//X轴数组和Y轴数组,还有一个是步数
bool k[51][51];//判去重
int t,z,head,tail;
void write()
{
	cout<=1&&m<=50&&m>=1&&k[l][m]==0)//边界
			{
				a[1][++tail]=l;
				a[2][tail]=m;
				k[l][m]=1;
				a[0][tail]=a[0][head]+1;//核心移动部分
			}
		}
		head++;
	}
	write();
}
void read()
{
	cin>>t>>z;work();
	cin>>t>>z;work();//两种棋子分别搜一次(蒟蒻不会只用一次搜索)
}
int main()
{
	 read();
	 return 0;//好看的主程序
}

你可能感兴趣的:(题解 luogu P1747 【好奇怪的游戏】)