hdu 1175 連連看(深搜)

2022-08-26 16:27:28 字數 1079 閱讀 6267

題意:判斷兩個位置的圖案能否消除(存在不超過兩次拐彎的連線)。

解題過程:

1、一開始開vis記錄已走過的位置,每個位置只能走一次。這樣明顯不行,因為一些拐彎超過兩次的路線會與正確的路線重合,那麼正確的路線就行不通了。

2、跳出條件設定的地方錯了,導致暴棧。

1 #include 

2 #include 

3#define n 100545

int a[n][n], n, m, flag, x1, x2, y1, y2, ans;

6int dir[4][2] = ;78

void dfs(int x0, int y0, int xn, int yn)

9 11

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

12     

25else

26                 dfs(xn, yn, xnn, ynn);

27         }

28     }

29 }

3031

int main()

32 55

if(ans==1)

56                     printf("

yes\n

");57

else

58                     printf("

no\n

");59             }

60         }

61     }

62return

0;63 }

view code

13 5

0 0 0 0 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 0 0 4 0

0 4 1 4 0

0 4 4 4 0

0 0 0 0 1

113 5 11 3

yes

搜尋 HDU1175 連連看

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

hdu 1175 連連看 dfs搜尋

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

HDU 1175 連連看 DFS 剪枝

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