國王和騎士
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 #include7poj 1178#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 }
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的非負整數。輸出 把...