• [洛谷P1747]好奇怪的游戏


    题目大意:有两匹马,马可以走"日",也可以像象走"田",求它走到(1,1)的步数。 

    题解:bfs

    卡点:边界判断成了可以走到(0,y)或(x,0) 

    C++ Code:

    #include<cstdio> 
    #include<cstring>
    using namespace std;
    const int maxn=51;
    int dx[12]={2,-2,2,-2,1,1,-1,-1,2,2,-2,-2};
    int dy[12]={2,2,-2,-2,2,-2,2,-2,1,-1,1,-1};
    int sx,sy,h,t;
    int q[maxn*maxn+100][2],s[maxn][maxn];
    bool cj(int x,int y){
    	if (x<1||y<1||x>50||y>50)return true;
    	if (s[x][y])return true;
    	return false;
    }
    int bfs(int sx,int sy){
    	if (sx==1&&sy==1)return 0;
    	s[sx][sy]=1;
    	q[t=1][h=0]=sx;q[1][1]=sy;
    	while (h<t){
    		int x=q[++h][0],y=q[h][1];
    		for (int i=0;i<12;i++){
    			int xx=x+dx[i],yy=y+dy[i];
    			if (cj(xx,yy))continue;
    			q[++t][0]=xx;q[t][1]=yy;
    			s[xx][yy]=s[x][y]+1;
    			if (xx==1&&yy==1)return s[1][1]-1;
    		}
    	}
    	return 0;
    }
    int main(){
    	scanf("%d%d",&sx,&sy);
    	printf("%d
    ",bfs(sx,sy));
    	memset(s,0,sizeof(s));
    	scanf("%d%d",&sx,&sy);
    	printf("%d
    ",bfs(sx,sy));
    	return 0;
    }
    
  • 相关阅读:
    jdk安装
    ubuntu 搜狗输入法成功安装
    matlab load
    matlab save 命令
    数字信号处理的思考
    非最大值抑制nms
    HMM,MEMM,CRF模型
    [bzoj2301][HAOI2011]Problem b
    [洛谷P3935]Calculating
    [bzoj4816][Sdoi2017]数字表格
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/8168829.html
Copyright © 2020-2023  润新知