這一題,做了好久,終於ac了,感覺題目有點坑,唉,題目不是很難,就是坑!!~~
找乙個錯誤,找了半天,後來才看到是變數用錯了!!~
題目中的b陣列是標記陣列。
#include #include #include using namespace std;
#define inf 1000000
int xy[4][2] = , , , };
int m, n;
int x1, x2, y1, y2;
int a[1005][1005], b[1005][1005];
class data
;int bfs()
else if(temp.dir == k)
else
if(te.x >= 1 && te.x <= m && te.y >= 1 && te.y <= n && te.k <= 2 && te.k <= b[te.x][te.y]) //判斷是否符合
}} }
return 0;
}int main()
scanf("%d", &num);
while(num--)
if(bfs())
printf("yes\n");
else
printf("no\n");
} }return 0;
}
hdu 1175 連連看(深搜)
題意 判斷兩個位置的圖案能否消除 存在不超過兩次拐彎的連線 解題過程 1 一開始開vis記錄已走過的位置,每個位置只能走一次。這樣明顯不行,因為一些拐彎超過兩次的路線會與正確的路線重合,那麼正確的路線就行不通了。2 跳出條件設定的地方錯了,導致暴棧。1 include 2 include 3 def...
搜尋 HDU1175 連連看
題目 分析 這道題看到的第一反應應該就是bfs或者dfs,裸的dfs bfs顯然會tle,所以我就想用a 不過好像並不好寫啟發函式。列舉步數不行,就列舉邊吧。因為允許有兩次轉折,所以最多有三條邊列舉中間的一條邊,然後進行check,這道題只用了兩個for迴圈就ac了。include include ...
hdoj 1175 連連看 dfs 剪枝
題目大意 題目給出一副連連看的圖形,其中0代表沒有物品,其餘數字代表該位置的物品,規定,每次消除所經過的路徑不能超過兩次專向。另外,不能在圖外進行轉向。問,對於q個詢問,是否能夠消除。每乙個詢問都是對於初始圖而言的,解題思路 dfs 剪枝。其實沒什麼好說的,有幾個要注意的地方,第乙個是判重,第二個是...