zoukankan      html  css  js  c++  java
  • POJ1915(Knight Moves)

    题目链接

    宽度优先搜索。

    View Code
     1 #include <stdio.h>
     2 #include <memory.h>
     3 #include <queue>
     4 #define N 300
     5 using namespace std;
     6 typedef pair<int,int> node;
     7 queue<node> Q;
     8 int dx[8]={1,1,-1,-1,2,2,-2,-2};
     9 int dy[8]={2,-2,2,-2,1,-1,1,-1};
    10 int n;
    11 int step[N][N];
    12 int si,sj,ei,ej;
    13 int bfs()
    14 {
    15   int i,j,ni,nj,d;
    16   node pos;
    17   memset(step,0,sizeof(step));
    18   while(!Q.empty()) Q.pop();
    19   Q.push(make_pair(si,sj));
    20   step[si][sj]=1;
    21   while(!Q.empty())
    22   {
    23     pos=Q.front(),Q.pop();
    24     i=pos.first;
    25     j=pos.second;
    26     for(d=0;d<8;d++)
    27     {
    28        ni=i+dx[d],nj=j+dy[d];
    29        if(ni<0 || nj<0 || ni>=n || nj>=n || step[ni][nj])  continue;
    30        step[ni][nj]=step[i][j]+1;
    31        if(ni==ei && nj==ej) return step[i][j];
    32        Q.push(make_pair(ni,nj));
    33      }
    34   }
    35 }
    36 int main()
    37 {
    38   int t;
    39   scanf("%d",&t);
    40   while(t--)
    41   {
    42     scanf("%d%d%d%d%d",&n,&si,&sj,&ei,&ej);
    43     if(si==ei && sj==ej)  printf("0\n");
    44     else  printf("%d\n",bfs());
    45   }
    46   return 0;
    47 }
  • 相关阅读:
    设计模式学习
    rabbitMQ topic实现广播
    rabbitMQ direct实现广播
    rabbitMQ fanout 实现广播
    rabbitMQ 生产者消费者
    python select 实现IO异步
    python gevent 爬虫
    python gevent socket
    python 协程
    python 进程池
  • 原文地址:https://www.cnblogs.com/algorithms/p/2469774.html
Copyright © 2011-2022 走看看