zoukankan      html  css  js  c++  java
  • POJ 1915 Knight Moves

    POJ_1915

        这个题目跟POJ_2243是非常相似的,只不过棋盘的大小是变化的而已。在读起点与终点之后,只需要从起点开始,对周围8个可达的位置进行广搜并依次记录到达该位置时的步数,当搜到终点的时候退出循环即可。

    #include<stdio.h>
    #include
    <string.h>
    int vis[310][310],dis[310][310],qx[90010],qy[90010];
    int dx[]={1,2,2,1,-1,-2,-2,-1},dy[]={2,1,-1,-2,-2,-1,1,2};
    int main()
    {
    int i,j,k,L,n,front,rear,sx,sy,tx,ty,x,y,newx,newy;
    scanf(
    "%d",&n);
    while(n--)
    {
    scanf(
    "%d",&L);
    scanf(
    "%d%d",&sx,&sy);
    scanf(
    "%d%d",&tx,&ty);
    for(i=0;i<L;i++)
    for(j=0;j<L;j++)
    vis[i][j]
    =0;
    front
    =rear=0;
    qx[rear]
    =sx;
    qy[rear]
    =sy;
    rear
    ++;
    vis[sx][sy]
    =1;
    dis[sx][sy]
    =0;
    while(front<rear)
    {
    x
    =qx[front];
    y
    =qy[front];
    front
    ++;
    if(x==tx&&y==ty)
    break;
    for(i=0;i<8;i++)
    {
    newx
    =x+dx[i];
    newy
    =y+dy[i];
    if(!vis[newx][newy]&&newx>=0&&newx<L&&newy>=0&&newy<L)
    {
    vis[newx][newy]
    =1;
    dis[newx][newy]
    =dis[x][y]+1;
    qx[rear]
    =newx;
    qy[rear]
    =newy;
    rear
    ++;
    }
    }
    }
    printf(
    "%d\n",dis[tx][ty]);
    }
    return 0;
    }

      

  • 相关阅读:
    函数响应式编程
    RxSwift
    Swift 5.1 新语法
    MVVM
    SwiftUI 九
    SwiftUI 八
    SwiftUI制作View可嵌套组件
    Swift 5.1 新语法
    MVVM
    Linux系统修改hostname,不用重启
  • 原文地址:https://www.cnblogs.com/staginner/p/2149917.html
Copyright © 2011-2022 走看看