poj2243Knight Moves寬搜

來源:互聯網
上載者:User

標籤:style   blog   color   os   for   io   

#include<stdio.h>#include<iostream>#include<string.h>#include<queue>#include<stack>#include<list>#include<stdlib.h>#include<algorithm>#include<vector>#include<map>#include<set>using namespace std;int dx[]={-2,-1,1,2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};int vis[10][10];char str[100],str1[100];int a,b,c,d;int dist[10000];void bfs(int x,int y){    int cc=x*10+y;    queue<int> q;    q.push(cc);    while(!q.empty()){        int cc=q.front();        q.pop();        int xx=cc/10;int yy=cc%10;        if(xx==c&&yy==d){            printf("To get from %s to %s takes %d knight moves.\n",str,str1,dist[cc]);            return ;        }        for(int i=0;i<8;i++){            int x1=xx+dx[i];int y1=yy+dy[i];            if(x1>=1&&x1<=8&&y1>=1&&y1<=8&&!vis[x1][y1]){                int k=x1*10+y1;                dist[k]=dist[cc]+1;                q.push(k);                vis[x1][y1]=1;            }        }    }}int main(){    while(cin>>str>>str1){        memset(dist,0,sizeof(dist));        memset(vis,0,sizeof(vis));        a=str[0]-‘a‘+1;b=str[1]-‘0‘;        c=str1[0]-‘a‘+1;d=str1[1]-‘0‘;        bfs(a,b);    }    return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.