标签:思考 names 不同 无线网络 规划 class 路径 bfs space
这个题搜索or动态规划
瞅了眼是搜索。。
想搜索路径的话会挺复杂的,但是想感觉搜索的大概过程应该可以做。
写崩了,如果范围不是10^8就好了
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 5 int n, m, k, r; 6 int map[105][2]; 7 int is_be_point[100000000][100000000]; 8 int can_be_set[105][2]; 9 void dfs(int x, int y); 10 11 int dec[28][2] = 12 {{0, -1}, {0, -2}, {0, -3}, {0, 1}, {0, 2}, {0, 3},//横 13 {-1, 0}, {-2, 0}, {-3, 0}, {1, 0}, {2, 0}, {3, 0},//竖 14 {-2, 1}, {-2, 2}, {-2, -1}, {-2, -2}, {-1, 1}, {-1, 2}, {-1, -1}, {-1, -2}, 15 {2, 1}, {2, 2}, {2, -1}, {2, -2}, {1, -1}, {1, -2}, {1, 1}, {1, 2} }; 16 17 int Sx, Sy, Tx, Ty; 18 int max_number_can_set; 19 int max_can_dec; 20 bool legal(int x, int y); 21 int main() 22 { 23 scanf("%d %d %d %d", &n, &m, &k, &r); 24 for(int i = 0; i < n; i ++){ 25 scanf("%d %d", &map[i][0], &map[i][1]); 26 is_be_point[map[i][0]][map[i][1]] = 1; 27 if(i == 0) 28 { 29 Sx = map[i][0]; 30 Sy = map[i][1]; 31 } 32 if(i == 1) 33 { 34 Tx = map[i][0]; 35 Ty = map[i][1]; 36 } 37 } 38 max_number_can_set = k; 39 max_can_dec = r; 40 for(int i = 0; i < m; i ++){ 41 scanf("%d %d", &can_be_set[i][0], &can_be_set[i][1]); 42 43 } 44 // 思考DFS还是BFS 45 dfs(Sx, Sy); 46 } 47 bool legal(int x, int y) 48 { 49 // if(abs(x) <= abs(Sx) && x <= Tx && y <= Ty && abs(y) <= Sy)//略有不同。。。好难写啊 50 if(x < max(Sx, Tx) && x > min(Sx, Tx) && 51 y < max(Sy, Ty) && y > min(Sy, Ty)) 52 return true; 53 else 54 return false; 55 } 56 void dfs(int x, int y) 57 { 58 if(!legal(x, y)) 59 return; 60 for(int i = 0; i < 29; i ++){ 61 int thisx = x + dec[i][0]; 62 int thisy = y + dec[i][1]; 63 if(map[thisx][thisy]) 64 dfs(thisx, thisy); 65 66 } 67 }
标签:思考 names 不同 无线网络 规划 class 路径 bfs space
原文地址:https://www.cnblogs.com/gerjcs/p/12944128.html