題目大意: 乙個8
×8' role="presentation">8×8
8×8的棋盤上有
n' role="presentation">n
n個點不可以走,求馬(騎士)從(s
x,sy
)' role="presentation">(sx
,sy)
(sx,
sy)走到
(ex,
ey)' role="presentation">(ex
,ey)
(ex,
ey)的最少步數。 in
put' role="presentation">inp
utin
put
10
c1 d1 d5 c2 c3 c4 d2 d3 d4 c5
a1 f1
0c1 b3
2b3 c2
a1 b2
-1
ou
tput
' role="presentation">out
puto
utpu
t
board
1: 7 moves
board
2: 1 moves
board
3: not reachable
思路:
bfs比較裸的廣搜吧。。。將n
' role="presentation">n
n個點賦值為1,表示不可以走,到時候走過的點也賦值給1,最終回溯輸出答案。
當然這道題記搜和dfs也都可以,2023年的gdoi應該也是比較簡單的一次了吧。時限都是2秒。
**:
#include
#include
#include
using
namespace
std;
const
int dx=;
const
int dy=;
int n,state[100001][3],a[101][101],head,tail,sx,sy,ex,ey,father[100001],tot,sum;
string s;
void print(int x,int k) //回溯輸出
bool check(int x,int y)
void bfs()
a[xx][yy]=1;
state[tail][1]=xx;
state[tail][2]=yy;
father[tail]=head;
if (check(xx,yy)) //到達了終點}}
while (headprintf("not reachable\n");
return;
}int main()
cin>>s;
sx=s[0]-'a'+1;
sy=s[1]-'0';
cin>>s;
ex=s[0]-'a'+1;
ey=s[1]-'0'; //起點和終點
a[sx][sy]=1;
printf("board %d: ",tot);
bfs();
}return
0;}
騎士問題 廣搜
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi 小ho你會下西洋棋麼?小ho 應該算會吧,我知道每個棋子的移動方式,馬走日象飛田什麼的 小hi 象飛田那是中國象棋啦!小ho 哦,對。西洋棋好像是走斜線來著。小hi 不過馬走日倒是對了。西洋棋中的馬一般叫做騎士,關...
HOJ 1440 騎士巡遊 BFS DFS
題目大意 你 的乙個朋友正在研究騎士巡遊問題,你的問題在於找到兩個方格之間移動的最小步數,一旦您解決了這個問題 找到你的旅行方式就會變的簡單 你的工作時寫乙個程式,方格 a b 作為輸入 決定a 到 b 最少的步數 輸入 輸入會有多組測試 魅族測試 一行 表示兩個方格位置 並且用 空格分開 每個 方...
BFS(廣搜) 騎士旅行
ssl 1456 題目描述 在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 1 1 騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。例如,n 4,m 3 時,若騎士在格仔 2 1 則騎士只能移入下面格仔 1 3 3 3 或 4 2 對於給定正...