注册 登录
编程论坛 数据结构与算法

虽然结果出来了,但是为什么有很多是重复的?

hunterevil 发布于 2016-03-22 22:44, 3203 次点击
程序代码:

#include"iostream"
using namespace std;
#define size 3
int maze[size+2][size+2];
void creat(){                                             //创建迷宫
int i,j;
for(i=0;i<=size+1;i++)
    for(j=0;j<=size+1;j++)
        maze[i][j]=0;
i=0;
for(j=0;j<=size+1;j++)
        maze[i][j]=1;
i=size+1;
for(j=0;j<=size+1;j++)
    maze[i][j]=1;
j=0;
for(i=0;i<=size+1;i++)
    maze[i][j]=1;
j=size+1;
for(i=0;i<=size+1;i++)
    maze[i][j]=1;
}void set_m(){                               //给迷宫设置障碍物,1表示有障碍物,0表示没有
    maze[1][2] = 1;
    maze[3][3]=1;
}
void show(){
int i,j;
for(i=0;i<=size+1;i++){                          //输出迷宫
    for(j=0;j<=size+1;j++){
        if(maze[i][j]==-1)cout<<"*"<<"  ";
       if(maze[i][j]==1)cout<<"#"<<"  ";
    if(maze[i][j]==0)cout<<"   ";

}
cout<<endl;
}
}
void search_m(int i,int j){                     //查找路径,出口点在2,3.入口点在1,1
if(i==2&&j==3){maze[i][j]=-1;int static k=1;cout<<""<<k<<"种:\n";show();k++;return;}
   if(maze[i][j]==-1||maze[i][j]==1)return;       //maze[i][j]表示改点曾经走过。
            maze[i][j]=-1;
           search_m(i-1,j);
           search_m(i,j+1);
           search_m(i+1,j);
           search_m(i,j+1);
            maze[i][j]=0;
}
int main(){
creat();
set_m();
show();
search_m(1,1);
return 0;
}



只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

2 回复
#2
hunterevil2016-03-22 22:46
本来答案应该是两种,但是为什么结果是8种,其中不一样的就两种,其余的全是重复的。
#3
书生牛犊2016-04-04 21:39
对于这种问题建议你拿到C++板块去问。。那里看得懂你代码的人更多写。数据结构预算法这个板块不适合就具体代码进行探讨。大家使用的语言可能都是不一样的。。。比如我就只懂C。。
1