static void Main(string[] args) { State estado = new State(0, 0, 3, 3, true); // CREAR ESTADO INICIAL BFS BreadthFirstSearch = new BFS(); // CREAR LA BÚSQUEDA POR ANCHURA State estadoFinal = BreadthFirstSearch.BreadthFirstSearch(estado); // OBTENER LA SOLUCIÓN (NODO OBJETIVO) Console.WriteLine("Estado Inicial:" + "\n" + "Canibales izquierda: " + estado.CanibalesIzquierda + "\n" + "Misioneros izquierda: " + estado.MisionerosIzquierda + "\n" + "------------------------" + "\n" + "Canibales derecha: " + estado.CanibalesDerecha + "\n" + "Misioneros derecha: " + estado.MisionerosDerecha); if (estado.Bote) { Console.WriteLine("Bote: DERECHA"); } else { Console.WriteLine("Bote: IZQUIERDA"); } Console.Write("\n"); Console.WriteLine(estadoFinal.ObtenerRecorrido()); // MOSTRAR EL RECORRIDO }
public static void Main(string[] args) { map = new int[10, 10] { // 初始的map_maze { 1, 0, 3, 3, 3, 3, 3, 0, 3, 3 }, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, { 0, 0, 0, 3, 0, 0, 3, 3, 3, 0 }, { 3, 0, 0, 0, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, { 3, 0, 0, 0, 3, 0, 0, 3, 0, 3 }, { 3, 0, 0, 0, 0, 3, 3, 0, 0, 0 }, { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, { 3, 3, 3, 0, 0, 3, 0, 3, 0, 3 }, { 3, 0, 0, 0, 0, 3, 3, 3, 0, 3 }, }; getMapStrings(); BFS.InitMap(map); List <Node> passNodes = new List <Node>(); int startX, startY; int endX, endY; getPoint(1, out startX, out startY); getPoint(2, out endX, out endY); Node start = new Node(startX, startY, map[startX, startY]); Node end = new Node(endX, endY, map[endX, endY]); BFS.Search(start, end, ref passNodes); Console.WriteLine("\n === BFS 寻路结束 === " + (passNodes.Count > 0)); Console.WriteLine("一共有 " + passNodes.Count + " 个中间节点"); for (int i = 0; i < passNodes.Count; i++) { int x = passNodes[i].X; int y = passNodes[i].Y; map[x, y] = 8; } PrintMapData(); getMapStrings(); /* * map = new int[10,10]{ // 初始的map_maze * { 1, 0, 0, 3, 0, 3, 0, 0, 0, 0 }, * { 0, 0, 3, 0, 0, 3, 0, 3, 0, 3 }, * { 3, 0, 0, 0, 0, 3, 3, 3, 0, 3 }, * { 3, 0, 3, 0, 0, 0, 0, 0, 0, 3 }, * { 3, 0, 0, 2, 0, 3, 0, 3, 0, 3 }, * { 3, 0, 0, 3, 0, 0, 0, 3, 0, 3 }, * { 3, 0, 3, 0, 0, 3, 3, 0, 0, 0 }, * { 0, 0, 3, 0, 0, 0, 0, 0, 0, 0 }, * { 3, 3, 3, 0, 0, 3, 0, 3, 0, 3 }, * { 3, 0, 0, 0, 0, 3, 3, 3, 0, 3 }, * }; */ map = new int[10, 10] { // 初始的map_maze { 1, 0, 3, 3, 3, 3, 3, 0, 3, 3 }, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, { 0, 0, 0, 3, 0, 0, 3, 3, 3, 0 }, { 3, 0, 0, 0, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, { 3, 0, 0, 0, 3, 0, 0, 3, 0, 3 }, { 3, 0, 0, 0, 0, 3, 3, 0, 0, 0 }, { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, { 3, 3, 3, 0, 0, 3, 0, 3, 0, 3 }, { 3, 0, 0, 0, 0, 3, 3, 3, 0, 3 }, }; Console.WriteLine("DFS开始======================================"); PrintMapData(); getMapStrings(); DFS.InitMap(map); passNodes.Clear(); getPoint(1, out startX, out startY); getPoint(2, out endX, out endY); start = new Node(startX, startY, map[startX, startY]); end = new Node(endX, endY, map[endX, endY]); DFS.Search(start, end, ref passNodes); Console.WriteLine("\n === DFS 寻路结束 === " + (passNodes.Count > 0)); Console.WriteLine("一共有 " + passNodes.Count + " 个中间节点"); for (int i = 0; i < passNodes.Count; i++) { int x = passNodes[i].X; int y = passNodes[i].Y; Console.Write(x + "," + y + " "); map[x, y] = 8; } PrintMapData(); getMapStrings(); }