假设我有一个像这样的矩阵:
其中 0 表示空格,1 表示第一项,2 第二项和 3 第三项
0 0 0 0 0
0 0 0 0 2
0 0 0 0 0
0 1 0 0 0
0 0 0 0 3
我开始(0,0)
并想进行一次巡回演出,1,2,3
因此i,j
就开始了(0,0)->(3,1)->(1,4)->(4,4)
所以要创造一条我正在考虑的道路
- 从起始位置 (0,0) 运行 BFS 到 1 位置 (3,1)
- 现在运行 BFS,起始位置将从 (3,1) 到 2 (1,4)
- 现在运行 BFS,起始位置为 (1,4) 到 3 (4,4)
要使用 BFS,我们需要节点定义和它的子节点,但是怎么做呢?到目前为止,我有:
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ejercicio2
{
class Program
{
struct position
{
public int row;
public int col;
};
const int NOT_VISITED = 0;
static int[,] map = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 2},
{0, 0, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 0, 0, 0, 3}
};
static void Main()
{
int who = 1;
position start;
start.row = 0;
start.col = 0;
//find 1
bfs(start, map, who);
start.row = 3;
start.col = 1;
//find 2
who = 2;
bfs(start, map,who);
start.row = 1;
start.col = 4;
//find 3
who = 3;
bfs(start, map,who);
}
static void bfs(position present, int[,] map, int lookingfor)
{
//how to look for looking for??
}
private bool visited(int[,] board, position cell)
{
return board[cell.row, cell.col] < 1;
}
}
}