一.入门级
P1747 好奇怪的游戏
P1747 好奇怪的游戏
题目描述
爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似象棋,但是只有黑白马各一匹,在点x1,y1和x2,y2上。它们得从点x1,y1和x2,y2走到1,1。这个游戏与普通象棋不同的地方是:马可以走“日”,也可以像象走“田”。现在爱与愁大神想知道两匹马到1,1的最少步数,你能帮他解决这个问题么?
思路: 基础的入门题
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdio.h>
#include<cmath>
#include<deque>
#include<queue>
#define debug cout<<"ok"<<endl
typedef long long ll;
const int maxn=1e3+1;
const int mod=1e9+7;
using namespace std;
struct node
{
int x,y,step;
node(int a=0,int b=0,int c=0)//结构体函数
{
x=a,y=b,step=c;
}
};
int dx[12]={
1,1,2,2,2,2,-1,-1,-2,-2,-2,-2};//走法
int dy[12]={
-2,2,-2,-1,1,2,-2,2,-1,1,-2,2};
int x1,x2,y_1,y2;
bool vis[maxn][maxn];//标记是否走过
queue<node>q;//队列实现bfs
void bfs(int a,int b)
{
q.push(node(a,b,0));//放
vis[a][b]=true;//标
while(!q.empty())
{
node nn=q.front();//取
q.pop();