在我们的学期项目中,我们试图制作一辆小型汽车,可以搜索地面上的金属。每当它遇到地面上的一个物体时,它必须标记它的坐标,并找到它周围的路径来访问所有剩余的节点。
我们已经实现了一种方法,我们可以在网格中记下该区域,因此我们将其全部放在x-y坐标中。我们考虑使用路径查找算法的修改版本(广度优先,A *或其他)来找到我们通过系统的方式,但我们在执行它时遇到了麻烦。
是否可以修改这些算法中的任何一个而不是从节点A到B,它搜索每个坐标,并且"重新路径"如果遇到地面上的物体?
答案 0 :(得分:0)
首先,我们检查所有方块是否包含金属。然后我们将广场与金属存储在一个布尔网格中。
bool grid[10000][10000];
for (int i = 0; i < width; i++){
for(int j = 0; j < height; j++){
if (square is metal){
grid[i][j] = true; //means its visited.
}
}
}
//Conduct bfs here
typedef pair<int , int> pi; //introduce priority queues
typedef pair<pi, int> ppi;
int dx[8] = {-1,-2, 1 ,2 ,-1, -2, 1, 2};//introduce movement coordinates
int dy[8] = {-2,-1, -2,-1, 2, 1, 2, 1};
//Check if the coordinates of the grid is true(visited) or false(unvisited)
希望这有帮助。