UVA 10384 推門遊戲 IDA 剪枝

2021-07-09 01:10:32 字數 963 閱讀 9848

題目鏈結

思路

因為是求最短步數,用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...