主题:求教
#include<iostream>
using namespace std;
int maze[10][10]=
{
{2,2,2,2,2,2,2,2,2,2},
{2,0,0,2,0,0,0,2,0,2},
{2,0,0,2,0,0,0,2,0,2},
{2,0,0,0,0,2,2,0,0,2},
{2,0,2,2,2,0,0,0,0,2},
{2,0,0,0,2,0,0,0,0,2},
{2,0,2,0,0,0,2,0,0,2},
{2,0,2,2,2,0,2,2,0,2},
{2,2,0,0,0,0,0,0,0,2},
{2,2,2,2,2,2,2,2,2,2},
};
int *s=new int[200];
void display(int);
void search(int i,int j)
{
int t;
t=0;
maze[i][j]=1;
s[t++]=i;
s[t++]=j;
while(1) //走过的地方赋值为1
{
if(maze[1][1]!=0 && maze[1][2]!=0 && maze[1][4]!=0 && maze[1][5]!=0 && maze[1][6]!=0 && maze[1][8]!=0 && maze[2][1]!=0 && maze[2][2]!=0 && maze[2][4]!=0 && maze[2][5]!=0 && maze[2][6]!=0 && maze[2][8]!=0&& maze[3][1]!=0&& maze[3][2]!=0&& maze[3][3]!=0&& maze[3][4]!=0&& maze[3][7]!=0&& maze[3][8]!=0&& maze[4][1]!=0&& maze[4][5]!=0&& maze[4][6]!=0&& maze[4][7]!=0&& maze[4][8]!=0&& maze[5][1]!=0&& maze[5][2]!=0&& maze[5][3]!=0&& maze[5][4]!=0&& maze[5][5]!=0&& maze[5][6]!=0&& maze[5][7]!=0&& maze[5][8]!=0&& maze[6][1]!=0&& maze[6][3]!=0&& maze[6][4]!=0&& maze[6][5]!=0&& maze[6][6]!=0&& maze[6][7]!=0&& maze[6][8]!=0&& maze[7][1]!=0&& maze[7][5]!=0&& maze[7][6]!=0&& maze[7][7]!=0&& maze[7][8]!=0&& maze[8][1]!=0&& maze[8][2]!=0&& maze[8][3]!=0&& maze[8][4]!=0&& maze[8][5]!=0&& maze[8][6]!=0&& maze[8][7]!=0)
{
break;
}
if(maze[i+1][j]==0||maze[i+1][j]==4)//下
{
if(((i+1)==8)&&j==8)
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i+1;
s[t++]=j;
maze[i+1][j]=1;
}
}
else if(maze[i][j+1]==0||maze[i][j+1]==4) //右
{
if(i==8&&((j+1)==8))
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i;
s[t++]=j+1;
maze[i][j+1]=1;
}
}
else if(maze[i][j-1]==0||maze[i][j-1]==4) //左
{
if(i==8&&((j-1)==8))
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i;
s[t++]=j-1;
maze[i][j-1]=1;
}
}
else if(maze[i-1][j]==0||maze[i-1][j]==4)//上
{
if(((i-1)==8)&&j==8)
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i-1;
s[t++]=j;
maze[i-1][j]=1;
}
}
else
{
maze[i][j]=3;
t=t-2;
}
j=s[t-1];
i=s[t-2];
}
return ;
}
void display(int t)
{
int a,b,r,c,i,j;
int x[100],y[100];
for(i=0,r=0;i<t;r++)
{
x[r]=s[i];
i=i+2;
}
for(j=1,c=0;j<t;c++)
{
y[c]=s[j];
j=j+2;
}
cout<<"一条路径: ";
for(a=0,b=0;a<r,b<c;a++,b++)
{
cout<<"("<<x[a]<<","<<y[b]<<")---";
}
cout<<"(8,8)"<<endl;
}
void disp(){
for(int i=0;i<10;i++)
{
cout<<endl;
for(int j=0;j<10;j++)
cout<<maze[i][j]<<",";
}
cout<<endl;
}
void main()
{
cout<<"原迷宫:"<<endl;
disp();
cout<<endl;
search(1,1);
disp();
char cc;
cout<<"请exit"<<endl;
cin>>cc;
}
要把这里的路径全部找出来要怎么改?
using namespace std;
int maze[10][10]=
{
{2,2,2,2,2,2,2,2,2,2},
{2,0,0,2,0,0,0,2,0,2},
{2,0,0,2,0,0,0,2,0,2},
{2,0,0,0,0,2,2,0,0,2},
{2,0,2,2,2,0,0,0,0,2},
{2,0,0,0,2,0,0,0,0,2},
{2,0,2,0,0,0,2,0,0,2},
{2,0,2,2,2,0,2,2,0,2},
{2,2,0,0,0,0,0,0,0,2},
{2,2,2,2,2,2,2,2,2,2},
};
int *s=new int[200];
void display(int);
void search(int i,int j)
{
int t;
t=0;
maze[i][j]=1;
s[t++]=i;
s[t++]=j;
while(1) //走过的地方赋值为1
{
if(maze[1][1]!=0 && maze[1][2]!=0 && maze[1][4]!=0 && maze[1][5]!=0 && maze[1][6]!=0 && maze[1][8]!=0 && maze[2][1]!=0 && maze[2][2]!=0 && maze[2][4]!=0 && maze[2][5]!=0 && maze[2][6]!=0 && maze[2][8]!=0&& maze[3][1]!=0&& maze[3][2]!=0&& maze[3][3]!=0&& maze[3][4]!=0&& maze[3][7]!=0&& maze[3][8]!=0&& maze[4][1]!=0&& maze[4][5]!=0&& maze[4][6]!=0&& maze[4][7]!=0&& maze[4][8]!=0&& maze[5][1]!=0&& maze[5][2]!=0&& maze[5][3]!=0&& maze[5][4]!=0&& maze[5][5]!=0&& maze[5][6]!=0&& maze[5][7]!=0&& maze[5][8]!=0&& maze[6][1]!=0&& maze[6][3]!=0&& maze[6][4]!=0&& maze[6][5]!=0&& maze[6][6]!=0&& maze[6][7]!=0&& maze[6][8]!=0&& maze[7][1]!=0&& maze[7][5]!=0&& maze[7][6]!=0&& maze[7][7]!=0&& maze[7][8]!=0&& maze[8][1]!=0&& maze[8][2]!=0&& maze[8][3]!=0&& maze[8][4]!=0&& maze[8][5]!=0&& maze[8][6]!=0&& maze[8][7]!=0)
{
break;
}
if(maze[i+1][j]==0||maze[i+1][j]==4)//下
{
if(((i+1)==8)&&j==8)
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i+1;
s[t++]=j;
maze[i+1][j]=1;
}
}
else if(maze[i][j+1]==0||maze[i][j+1]==4) //右
{
if(i==8&&((j+1)==8))
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i;
s[t++]=j+1;
maze[i][j+1]=1;
}
}
else if(maze[i][j-1]==0||maze[i][j-1]==4) //左
{
if(i==8&&((j-1)==8))
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i;
s[t++]=j-1;
maze[i][j-1]=1;
}
}
else if(maze[i-1][j]==0||maze[i-1][j]==4)//上
{
if(((i-1)==8)&&j==8)
{
display(t);
t=t-2;
j=s[t-1];
i=s[t-2];
continue;
}
else
{
s[t++]=i-1;
s[t++]=j;
maze[i-1][j]=1;
}
}
else
{
maze[i][j]=3;
t=t-2;
}
j=s[t-1];
i=s[t-2];
}
return ;
}
void display(int t)
{
int a,b,r,c,i,j;
int x[100],y[100];
for(i=0,r=0;i<t;r++)
{
x[r]=s[i];
i=i+2;
}
for(j=1,c=0;j<t;c++)
{
y[c]=s[j];
j=j+2;
}
cout<<"一条路径: ";
for(a=0,b=0;a<r,b<c;a++,b++)
{
cout<<"("<<x[a]<<","<<y[b]<<")---";
}
cout<<"(8,8)"<<endl;
}
void disp(){
for(int i=0;i<10;i++)
{
cout<<endl;
for(int j=0;j<10;j++)
cout<<maze[i][j]<<",";
}
cout<<endl;
}
void main()
{
cout<<"原迷宫:"<<endl;
disp();
cout<<endl;
search(1,1);
disp();
char cc;
cout<<"请exit"<<endl;
cin>>cc;
}
要把这里的路径全部找出来要怎么改?