HDU 1175 連連看 搜尋,dfs

2021-07-11 10:22:47 字數 766 閱讀 9981

類似於迷宮問題,主要就在轉折的處理上,在這裡可以有乙個強剪枝,具體見**。

參考部落格:    感謝!

#include #include #include #include using namespace std;

int map[1010][1010];

int tmap[1010][1010];

int n, m, q;

int x1, y1, x2, y2;

int flag;

int dir[4][2] = ; // 右下左上1234

void dfs(int x, int y, int chg, int d)

} if(x == x2 && y == y2)

for(i = 0; i < 4; i++)

tmap[tx][ty] = -1;

if(d == 0)

else

else

} tmap[tx][ty] = 0; //不要忘記回溯,因為已經走過的地方下次還有可能走 }}

int main()

} scanf("%d", &q);

while(q--)

else

flag = 0;

tmap[x1][y1] = -1;

dfs(x1, y1, 0, 0);

if(flag == 0) printf("no\n");

} }return 0;

}

hdu 1175 連連看 dfs搜尋

題目大意 因為是中文題,就不多說了。題目對兩塊棋子能否消除的限制為 兩者之間的連線不能轉向2次以上,並且不能穿過其他棋子.個人想法 dfs.如果能滿足題目的條件從一塊搜尋到另一塊,那麼就輸出yes,否則no。但這邊不知道為何,如果沒有在轉向兩次以後進行剪枝 接下去就只朝乙個方向走 的話,就是超時.結...

搜尋 HDU1175 連連看

題目 分析 這道題看到的第一反應應該就是bfs或者dfs,裸的dfs bfs顯然會tle,所以我就想用a 不過好像並不好寫啟發函式。列舉步數不行,就列舉邊吧。因為允許有兩次轉折,所以最多有三條邊列舉中間的一條邊,然後進行check,這道題只用了兩個for迴圈就ac了。include include ...

HDU 1175 連連看 DFS 剪枝

題目大意 連連看,中文題就不解釋了!解題思路 好坑的題呀,除錯了我n多個小時,怎麼都不對,後邊各種中間結果輸出都用上了,交上去一直wa。早上過來重新寫了一次,居然a了。完全不能理解呀!說下這個題吧,主要是對各個條件的剪枝上,其它都很簡單。在剪枝上的分析就不具體說了,給了很詳細的注釋了,各種細節注意就...