T1330最少步数(#Ⅱ- 8)(广度优先搜索)
生活随笔
收集整理的這篇文章主要介紹了
T1330最少步数(#Ⅱ- 8)(广度优先搜索)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目描述】
在各種棋中,棋子的走法總是一定的,如中國象棋中馬走“日”。有一位小學(xué)生就想如果馬能有兩種走法將增加其趣味性,因此,他規(guī)定馬既能按“日”走,也能如象一樣走“田”字。他的同桌平時喜歡下圍棋,知道這件事后覺得很有趣,就想試一試,在一個(100×100)的圍棋盤上任選兩點(diǎn)A、B,A點(diǎn)放上黑子,B點(diǎn)放上白子,代表兩匹馬。棋子可以按“日”字走,也可以按“田”字走,倆人一個走黑馬,一個走白馬。誰用最少的步數(shù)走到左上角坐標(biāo)為(1,1)的點(diǎn)時,誰獲勝。現(xiàn)在他請你幫忙,給你A、B兩點(diǎn)的坐標(biāo),想知道兩個位置到(1,1)點(diǎn)可能的最少步數(shù)。
【輸入】
A、B兩點(diǎn)的坐標(biāo)。
【輸出】
最少步數(shù)。
【輸入樣例】
12 16
18 10
【輸出樣例】?
8
9
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 101 #define MOD 2520 #define E 1e-12 using namespace std; int a[N][N]; bool vis[N][N]; int dir[][2]={{-2,1},{-2,-1},{-2,2},{-2,-2},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1},{2,-2},{2,2}}; struct node {int x;int y;int step; }q[N*100]; void bfs(int x0,int y0) {int head=1,tail=1;memset(vis,0,sizeof(vis));q[tail].x=x0;q[tail].y=y0;q[tail].step=0;tail++;vis[x0][y0]=1;while(head<tail){int x=q[head].x;int y=q[head].y;int step=q[head].step;if(x==1&&y==1){printf("%d\n",step);break;}for(int i=0;i<12;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=1&&nx<=100&&ny>=1&&ny<=100&&vis[nx][ny]==0){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;q[tail].step=step+1;tail++;}}head++;} } int main() {int xa,ya,xb,yb;scanf("%d%d%d%d",&xa,&ya,&xb,&yb);bfs(xa,ya);bfs(xb,yb);return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/alan-blog-TsingHua/p/9733940.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的T1330最少步数(#Ⅱ- 8)(广度优先搜索)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python全栈-Day 14
- 下一篇: 消息队列rabitMq