上次在CSDN上有人求解一个迷宫算法,当时刚好有点时间,就随便写了写,主要是利用递归回溯,直到找到正确路径为止,当然这个算法还可以稍加修改,也很容易把所有的路径都计算出来.然后找一个最短路径之类的,很容易.
//begin *.c///
#include "stdafx.h"
#include<stdio.h>
typedef char BOOL;
//迷宫算法
const int a[6][7] = {
{0, 1, 0, 1, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1},
{0, 0, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 1, 1, 0},
{0, 1, 1, 1, 0, 1, 0},
{1, 1, 1, 0, 1, 0, 0}
};
const int MAX_X = 6;
const int MAX_Y = 7;
//每一步在数组中的位置
typedef struct _STEP
{
//::memset(this, 0, sizeof(_STEP));
int x;
int y;
}Step;
//当前位置
Step trace[50];
Step stepCurrent;
int iCounter;
//移动操作
BOOL Right();
BOOL RightDown();
BOOL Down();
//begin *.c///
#include "stdafx.h"
#include<stdio.h>
typedef char BOOL;
//迷宫算法
const int a[6][7] = {
{0, 1, 0, 1, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1},
{0, 0, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 1, 1, 0},
{0, 1, 1, 1, 0, 1, 0},
{1, 1, 1, 0, 1, 0, 0}
};
const int MAX_X = 6;
const int MAX_Y = 7;
//每一步在数组中的位置
typedef struct _STEP
{
//::memset(this, 0, sizeof(_STEP));
int x;
int y;
}Step;
//当前位置
Step trace[50];
Step stepCurrent;
int iCounter;
//移动操作
BOOL Right();
BOOL RightDown();
BOOL Down();