bzoj1085 SCOI2005 騎士精神

2022-05-21 13:48:10 字數 792 閱讀 8111

(題目鏈結)

給出乙個初始局面,問能否在15步內走到最終局面,並輸出最少步數。

迭代加深+a*,估價函式就是有cnt個子不在最終局面的位置,也就是說就算每一步都能將乙個子歸位,那麼至少也需要cnt步。

終於有點理解估價函式的意義了,估出來的必須必實際的要小,這才能保證答案的正確性。

// bzoj1085

#include#include#include#include#include#include#include#define ll long long

#define inf 2147483640

#define pi acos(-1.0)

#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);

using namespace std;

int ans[5][5]=,,,

,};

int xx[8]=;

int yy[8]=;

int a[5][5],d,flag;

char ch[10];

bool judge()

bool eva(int s)

void dfs(int s,int x,int y)

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

}int main()

} for (d=0;d<=15;d++)

} if (!flag) puts("-1");

} return 0;

}

BZOJ 1085 SCOI 2005 騎士精神

之前聽說過ida 好像很優越啊。估價函式為不在目標位置的棋子個數。列舉一遍最大搜尋深度即可。還得好好斟酌一下要列舉的搜尋深度。344ms。include include using namespace std define rep i,j,k for int i j imaxdep return 0...

bzoj1085 SCOI2005 騎士精神

此題用到了a 演算法以及迭代加深搜尋。其實做本題之前看到過這個東西,發現估價什麼的好複雜,一直不會用。但應用於本題很容易就能實現,只要和最終結果一一比對即可。演算法如下,借鑑了hzwer大神的寫法。include include using namespace std int ans 5 5 int...

BZOJ1085 SCOI2005 騎士精神

在乙個5 5的棋盤上有12個白色的騎士和12個黑色的騎士,且有乙個空位。在任何時候乙個騎士都能按照騎 士的走法 它可以走到和它橫座標相差為1,縱座標相差為2或者橫座標相差為2,縱座標相差為1的格仔 移動到空 位上。給定乙個初始的棋盤,怎樣才能經過移動變成如下目標棋盤 為了體現出騎士精神,他們必須以最...