C語言程式設計練習57 馬的移動

2022-06-20 18:54:10 字數 1223 閱讀 1429

題目描述

輸入

輸入包含多組測試資料。每組輸入由兩個方格組成,每個方格包含乙個小寫字母(a~h),表示棋盤的列號,和乙個整數(1~8),表示棋盤的行號。

輸出

對於每組輸入,輸出一行「to get from xx to yy takes n knight moves.」。

樣例輸入

copy

e2 e4

a1 b2

b2 c3

a1 h8

a1 h7

h8 a1

b1 c3

f6 f6

樣例輸出 copy

to get from e2 to e4 takes 2 knight moves.

to get from a1 to b2 takes 4 knight moves.

to get from b2 to c3 takes 2 knight moves.

to get from a1 to h8 takes 6 knight moves.

to get from a1 to h7 takes 5 knight moves.

to get from h8 to a1 takes 6 knight moves.

to get from b1 to c3 takes 1 knight moves.

to get from f6 to f6 takes 0 knight moves.

思路:寬度優先搜尋,每一步有8種選擇。

#include #include #include #include #include #include #include using namespace std;

int c[8][2]=,,,,,,,};//下一步的8種選擇

int visit[9][9];//記錄是否走過

int x1,y1,x2,y2;//開始和結束的座標

int minstep;

char s1[5],s2[5];

void bfs(int a,int b,int cnt)

if(cnt>minstep)

for(int i=0;i<8;i++)

if(visit[n][m]==0)

}}int main()

return 0;

}

C語言程式設計練習

1 給你任意三個整形資料,找出其中最大乙個整形數。include main int findmax int x,int y,int z else if z max return max 使用函式 三目運算子 include int main int findmax int x,int y 2 求1 ...

c語言程式設計練習

練習 賬號 taylent problem 2000 ascii碼排序 problem description 輸入三個字元後,按各字元的ascii碼從小到大的順序輸出這三個字元。includeint main return 0 補充知識點 在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用...

C語言程式設計練習

調整陣列使奇數全部都位於偶數前面 題目 輸入乙個整數陣列,實現乙個函式,來調整該陣列中數字的順序使得陣列中所有的奇數字於陣列的前半部分,所有偶數字於陣列的後半部分 設計思路 一 前奇後奇 讓這個陣列前半部分往右移動一位,即left 後半部分不動。二 前奇後偶 這個陣列前半部分右移一位,即left 後...