uva 439 Knight Moves 騎士移動

來源:互聯網
上載者:User

標籤:mil   art   while   data-   nod   div   代碼   cpp   mem   

這道題曾經寫過,bfs。用隊列,不多說了,上代碼:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>using namespace std;int map[10][10];int visit[10][10];int dist[10][10];int dx[8]={-2,-2,-1,-1,1,1,2,2};int dy[8]={-1,1,-2,2,-2,2,-1,1}; char a[5];int x2,y2;struct node{int x,y;};queue<node>q; int bfs(node T){if(T.x==x2&&T.y==y2){return dist[T.x][T.y];}else{while(!q.empty()){node m = q.front();q.pop();if(m.x==x2&&m.y==y2)return dist[m.x][m.y];for(int i=0; i<8; i++){int xx = m.x+dx[i];int yy = m.y+dy[i];if(!visit[xx][yy]&&xx>0&&yy>0&&xx<=8&&yy<=8){node n ;n.x = xx;n.y = yy;q.push(n);dist[xx][yy] = dist[m.x][m.y]+1;visit[xx][yy] = 1;}}}}}int main(){int x1,y1,i,j;while(gets(a)){y1 = a[0]-‘a‘+1;x1 = a[1]-‘0‘;y2 = a[3]-‘a‘+1;x2 = a[4]-‘0‘;//printf("%d %d %d %d\n",x1,y1,x2,y2);node T;T.x = x1;T.y = y1;memset(dist,0,sizeof(dist));memset(visit,0,sizeof(visit));q.push(T);bfs(T);printf("To get from %c%c to %c%c takes %d knight moves.\n",a[0],a[1],a[3],a[4],dist[x2][y2]);while(!q.empty()){q.pop();} }return 0;} 


uva 439 Knight Moves 騎士移動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.