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;
    }

  • 相关阅读:
    真正的e时代
    在线手册
    UVA 10616 Divisible Group Sums
    UVA 10721 Bar Codes
    UVA 10205 Stack 'em Up
    UVA 10247 Complete Tree Labeling
    UVA 10081 Tight Words
    UVA 11125 Arrange Some Marbles
    UVA 10128 Queue
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290334.html
Copyright © 2011-2022 走看看