題意:能不能將兩個位置的棋子(非0)消去,並不能超過兩次改變方向.
題型:廣度優先搜尋(bfs)
思路:將其中的乙個點作為起點,向外搜尋,看能否在限制條件之內找到另乙個點
個人總結:我做的時候沒考慮完全,所以沒有用陣列(**中的num)儲存到達該點時轉向最少次數,所以一直wa了!
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int inf=10000000;
struct nodest,rt,ne;
int n,m;
int map[1005][1005];
int num[1005][1005];
int dx[4]=;
int dy[4]=;
bool bfs(int x1,int y1,int x2,int y2)
} }
return false; }
int main()
} return 0;
}
HDU1175 搜尋 剪枝
題目鏈結 連連看 題目大意 給一張n m大小的圖,問查詢的兩個點k1與k2之間能不能消掉,消掉的條件是通過走沒有東西的路徑拐彎不超過兩次到達目標點。0表示沒有東西,1的物品表示相應的東西 並且不能夠走外圍。解題思路 從起點向終點搜尋可行解,有乙個重要的剪枝是 當無轉彎的次數時,還沒到達與終點相同的行...
HDU1175連連看 廣度優先搜尋BFS
1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include 10 include 11 include 12 include 13 include 14 using namespa...
搜尋 HDU1175 連連看
題目 分析 這道題看到的第一反應應該就是bfs或者dfs,裸的dfs bfs顯然會tle,所以我就想用a 不過好像並不好寫啟發函式。列舉步數不行,就列舉邊吧。因為允許有兩次轉折,所以最多有三條邊列舉中間的一條邊,然後進行check,這道題只用了兩個for迴圈就ac了。include include ...