网格,m*n ,机器人从左上角抵达右下角,可能存在的路径条数,并输出所有路径。
(2,5)到(1,1)的路径。
#include<iostream>
#include<stdlib.h>
#define MaxSize 10
#define M 2
#define N 2
using namespace std;
typedef struct
{
int i;//方块行号
int j;//方块列号
}Box; //方块的类型
typedef struct
{
Box data[MaxSize];//c存放一条路径上的所有方块
int length; //迷宫路径的长度
}PathType; //迷宫路径的类型
int mg[M][N]={0};
//int c=0;
void mgpath(int xi,int yi,int xe,int ye,PathType path)
{
int d,k,i,j;
if(xi==xe&&yi==ye) //找到出口,输出一个路径
{
path.data[path.length].i=xi;//将(xi,yi)添加到path中
path.data[path.length].j=yi;
path.length++;
for(k=0;k<path.length;k++)
cout<<"\t"<<"("<<path.data[k].i<<","<<path.data[k].j<<")";
cout<<endl;
}
else //(xi,yi)不是出口
{
if(mg[xi][yi]==0)
{
d=0;
while(d<2)
{
path.data[path.length].i=xi;
path.data[path.length].j=yi;
path.length++; //路径长度加1
switch(d)
{
case 0:
i=xi;j=yi-1;break;
case 1:
i=xi-1;j=yi;break;
}
mg[xi][yi]=-1; //
mgpath(i,j,xe,ye,path);
mg[xi][yi]=0;
path.length--;
d++;
}
}
}
}
int main()
{
PathType path;
path.length=0;
cout<<"机器人从(m,n)位置到(1,1)位置(m=2,n=2)"<<endl;
//cout<<c<<endl;
cout<<"所有路径如下"<<endl;
mgpath(M,N,1,1,path);
return 0;
}