求给出走迷宫是否可走通的代码?迷宫用0,1数组Map[20,20],,1标示墙体,0标示路;
从(0,0)走到(19,19);
我写了一段出不来效果?
private void visit(int i, int j)
{
int endI=19,endJ=19;
Map[i,j] = 2;
if (i == endI && j == endJ)
{
CanGo=true ;
return;
}
if (j<19 && Map[i,j + 1] == 0) visit(i, j + 1);
if (i < 19 && Map[i + 1, j] == 0) visit(i + 1, j);
if (j >0 && Map[i, j - 1] == 0) visit(i, j - 1);
if (i > 0 && Map[i - 1, j] == 0) visit(i - 1, j);
Map[i,j] = 0;
} 主函数
CanGo=false ;
visit(0, 0);
后判断全局CanGo是否真可知迷宫是否可走通
从(0,0)走到(19,19);
我写了一段出不来效果?
private void visit(int i, int j)
{
int endI=19,endJ=19;
Map[i,j] = 2;
if (i == endI && j == endJ)
{
CanGo=true ;
return;
}
if (j<19 && Map[i,j + 1] == 0) visit(i, j + 1);
if (i < 19 && Map[i + 1, j] == 0) visit(i + 1, j);
if (j >0 && Map[i, j - 1] == 0) visit(i, j - 1);
if (i > 0 && Map[i - 1, j] == 0) visit(i - 1, j);
Map[i,j] = 0;
} 主函数
CanGo=false ;
visit(0, 0);
后判断全局CanGo是否真可知迷宫是否可走通
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Can_go
{
class Program
{
private int [,]Map=new int[20,20];
private int endI=19,endJ=19;
private bool CanGo = false;
private void visit(int i, int j)
{
Map[i,j] = 2; //走的踪迹路线
if (i == endI && j == endJ)
{
CanGo=true ;
return;
}
if (j <19 && Map[i,j + 1] == 0) visit(i, j + 1);
if (i < 19 && Map[i + 1, j] == 0) visit(i + 1, j);
if (j >0 && Map[i, j - 1] == 0) visit(i, j - 1);
if (i > 0 && Map[i - 1, j] == 0) visit(i - 1, j);
//Map[i,j] = 0;
//Console.Write("({0},{1})", i, j);
}
private void createmap()
{
Random random = new Random();
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{ int ran = random.Next() % 300;
Map[i, j] = (ran > 100) ? 0 : 1;
Console.Write("{0}", Map[i, j]);
}
Console.WriteLine();
}
Map[0, 0] = 0;
Map[19, 19] = 0; }
static void Main(string[] args)
{
Program a = new Program();
a.createmap();
a.visit(0, 0);
Console.WriteLine("{0}", a.CanGo);
Console.Read(); }
}
}