POJ 1178 國王和騎士

2022-08-03 07:09:12 字數 1703 閱讀 2942

國王和騎士

time limit:1000ms

memory limit:10000k

total submissions:3319

accepted:1559

題目描述

在乙個 8*8 的棋盤裡有乙個國王和一些騎士,我們要把他們送到同一頂點上去。國王能

夠選擇一名騎士作為坐騎,而與騎士一起行動(相當於乙個騎士),同一位置,同一時刻可

以有多個騎士。問最少走的步數。騎士的行動方式如下圖所示。

輸入格式

僅有一行,包含乙個字母和數字間隔的字串,先字母再數字,字母僅可能是大寫的 a

到 h,數字只可能是 1 到 8,描述國王和騎士的座標位置,第乙個是國王的座標,後面都是

騎士的座標,顯然字母是列號,數字是行號。

輸出格式

僅有乙個數,表示題目要求的最少步數。

樣例輸入

d4a3a8h1h8

樣例輸出

10資料範圍

字串的長度不會超過 128。

1 #include2 #include3 #include4 #include5 #include6 #include7

#define maxn 101010

8using

namespace

std;9//

乙個橫座標乙個縱座標,順序賦值,騎士走的八個格

10int dir[8][2] = , , , , , , , };

11int distk[2][65][65]; //

0:表騎士;1:表國王

12int pos[65][2

];13

int num=0;14

15bool inrange(int row, int

col)

1619

//初始化格仔之間的最短距離, 同時將騎士可走的格仔之間的距離設定為1

20void

init()

2131

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

32for(j=0;j<8;j++)

33for(k=0;k<8;k++)

3443}44

}45//計算任意兩個格仔之間的最短距離

46void

floyd()

4754

void

getres()

5578

//dists + d1 + d2是當前總的距離

79 res=min(res,dists+d1+d2);80}

81}82 printf("%d"

,res);83}

84int

main()

8596

init();

97floyd();

98getres();

99100 }

poj 1178

SWUSTOJ 1178 密碼翻譯

源 在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密演算法雖然不足以完全避免情報被破譯,但仍然能防止情報被輕易的識別。我們給出一種最簡的的加密方法,對給定的乙個字串,把其中從a y,a y的字母用其後繼字母替代,把z和z用a和a替代,其他非字母字元不變,則可得到乙個簡...

1178 成績排序

問題描述 給出班裡某門課程的成績單,請你按成績從高到低對成績單排序輸出,如果有相同分數則名字字典序小的在前。輸入 第一行為n 0 n 20 表示班裡的學生數目 接下來的n行,每行為每個學生的名字和他的成績,中間用單個空格隔開。名字只包含字母且長度不超過20,成績為乙個不大於100的非負整數。輸出 把...

1178 成績排序

問題描述 給出班裡某門課程的成績單,請你按成績從高到低對成績單排序輸出,如果有相同分數則名字字典序小的在前。輸入 第一行為n 0 n 20 表示班裡的學生數目 接下來的n行,每行為每個學生的名字和他的成績,中間用單個空格隔開。名字只包含字母且長度不超過20,成績為乙個不大於100的非負整數。輸出 把...