在乙個5×5的棋盤上有12個白色的騎士和12個黑色的騎士, 且有乙個空位。在任何時候乙個騎士都能按照騎士的走法(它可以走到和它橫座標相差為1,縱座標相差為2或者橫座標相差為2,縱座標相差為1的格仔)移動到空位上。 給定乙個初始的棋盤,怎樣才能經過移動變成如下目標棋盤: 為了體現出騎士精神,他們必須以最少的步數完成任務。
第一行有乙個正整數t(t<=10),表示一共有n組資料。接下來有t個5×5的矩陣,0表示白色騎士,1表示黑色騎士,*表示空位。兩組資料之間沒有空行。
對於每組資料都輸出一行。如果能在15步以內(包括15步)到達目標狀態,則輸出步數,否則輸出-1。
210110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
7一眼搜尋無疑,考慮到爆搜一定會超時,而題中說在15步以內,我們可以直接列舉步數搜空點(*),然後每次判斷剩下的能不能到達最終狀態:如果目前狀態與最終狀態的不一樣的點的個數加上已走的步數大於要搜的步數,就不能到達。-1
**:
#include
#include
#include
#include
#include
using
namespace
std;
int bbbb,map[6][6]=,,,,,};
int now[6][6];
int xx[8]=,yy[8]=;
bool judge(int k,int maxn)
void dfs(int step,int maxn,int x,int y)
for(int i=0;i<8;i++)
}}int main()}}
for(int i=0;i<=15;i++)
}if(!bbbb)
printf("-1\n");
bbbb=0;}}
bzoj 1085 騎士精神
time limit 10 sec memory limit 162 mb submit 1461 solved 796 submit status discuss 在乙個5 5的棋盤上有12個白色的騎士和12個黑色的騎士,且有乙個空位。在任何時候乙個騎士都能按照騎士的走法 它可以走到和它橫座標相差...
BZOJ 1085 騎士精神 A
description 在乙個5 5的棋盤上有12個白色的騎士和12個黑色的騎士,且有乙個空位。在任何時候乙個騎士都能按照騎士的走法 它可以走到和它橫座標相差為1,縱座標相差為2或者橫座標相差為2,縱座標相差為1的格仔 移動到空位上。給定乙個初始的棋盤,怎樣才能經過移動變成如下目標棋盤 為了體現出騎...
BZOJ 1085 騎士精神
time limit 10 sec memory limit 162 mb submit 3229 solved 1908 submit status discuss description 在乙個5 5的棋盤上有12個白色的騎士和12個黑色的騎士,且有乙個空位。在任何時候乙個騎士都能按照騎士的走法...