題目鏈結
思路
因為是求最短步數,用ida*剪枝條件從(x,y)前進方向若無牆,直接前進
否則,先判斷下一步(tx,ty)的相同方向是否有牆
若有牆,不能推
特殊點:若無牆,除了需更改(x,y)和(tx,ty)的對應方向的牆標記外,還需更改(tx,ty)對應的下一步的反方向的牆標記
資料範圍很小,剪枝的作用相當小,若非要減,可以判斷當前座標與最近地圖邊界的步數+當前已走步數 > max 若成立,則減去(即最快情況也無法在max步內走出地圖)**
#include
#include
#include
#include
#include
#include
using
namespace
std;
int d[4] = ;
int dx[4] = ;
int dy[4] = ;
int ans[35];
int g[5][7];
bool f[5][7];
char str = "wnes";
int solve(int x, int y)
bool ida_star(int x, int y, int now, int max)
for(int i=0;i<4;i++)
else
if((g[tx][ty]&d[i]) == 0)}}
return
false;
}int main()}}
return
0;}
UVa 489 劊子手遊戲
遊戲規則,計算機想乙個單詞讓你猜,你每次可以猜乙個字母,如果單詞裡有那個字母,所有該字母都會顯示出來,如果沒有那個字母 則計算機會在一副 劊子手 畫上填一筆,這幅畫一共需要7筆就能完成,因此你最多只能錯6次。注意猜乙個已經猜過的字母也算錯。在本題中,你的任務是編寫乙個 裁判 程式,輸入單詞和玩家的猜...
UVa 10935 卡片遊戲
桌上有疊牌,從第一張牌 即位於頂面的牌 開始從上往下依次編號為1 n。當至少還剩兩張牌時進行以下操作 把第一張牌扔掉,然後把新的第一張放一整疊牌的最後。輸入n,輸出每次扔掉的牌,以及最後剩下的牌。樣例輸入 7 樣例輸出 1 3 5 7 4 2 6 include include using name...
UVa 10935 卡片遊戲
乙個關於queue使用的訓練題目 題意為 給你乙個1 n的卡片,將最前面的一張輸出並扔掉,然後再把此時最前面的放在最後,知道只剩一張卡片,輸出剩下的這個卡片 這個題目個人覺得比較坑.wa了兩次,pe了兩次 分別是因為數字與數字之間有 這是乙個英文逗號和乙個空格,此處造成了我的答案錯誤 然後再者如果n...