zoukankan      html  css  js  c++  java
  • 64.广搜练习跳马问题

    64.广搜练习跳马问题

    64.广搜练习跳马问题
    代码:
    #include
    using namespace std;
    #include
    #include
    #define INF 101
    int can[101][101];//1 wei ke zou,存是否可走2 
    int dis[101][101];//存距离 
    int dl1[101],dl2[101];
    int xx[]={-2,-2,2,2,1,-1,1,-1};
    int yy[]={1,-1,1,-1,2,2,-2,-2};
    int n,x,y;
    void input()
    {
    scanf("%d",&n);
    scanf("%d%d",&x,&y);
    for(int i=1;i<=n;++i)
     for(int j=1;j<=n;++j)
     {
      scanf("%d",&can[i][j]);//1 shi ke zou
     }
    }
    void BFS()
    {
    memset(dis,-1,sizeof(dis));//memset函数赋初值,只有0和-1是对应的,别的数就不是了 
    int head=0,tail=0;
    ++tail;
    dl1[1]=x;
    dl2[1]=y;
    dis[x][y]=0;
    while(head
    {
    ++head;
    int x0=dl1[head],y0=dl2[head];
    for(int i=0;i<8;++i)
    {
    int x1=x0+xx[i],y1=y0+yy[i];
    if(x1>=1&&x1<=n&&y1>=1&&y1<=n&&can[x1][y1]==1&&dis[x1][y1]==-1)//赋初值为-1,是处理走不到的点 
    {
    ++tail;
    dis[x1][y1]=dis[x0][y0]+1;
    dl1[tail]=x1;
    dl2[tail]=y1;
    }
    }
    }
    }
    void out()
    {
    for(int i=1;i<=n;++i)
     {
      for(int j=1;j<=n;++j)
           printf("%d ",dis[i][j]);
      printf(" ");  
          }
    }
    int main()
    {
    input();
    BFS();
    out();
    return 0;
    }

  • 相关阅读:
    UVa 107 The Cat in the Hat
    UVa 591 Box of Bricks
    UVa 253 Cube painting
    UVa 10161 Ant on a Chessboard
    UVa 401 Palindromes
    UVa 465 Overflow
    我不知道
    消防局的设立
    某CF的D
    保安站岗
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370755.html
Copyright © 2011-2022 走看看