bug/error in basis set path algorithm i can't figure out
- by Roy McAvoy
The following looks through a 2d array to find basis set paths. It is supposed to print out the individual paths but not repeat any and end when all paths are found. It however doesn't stop at the last path and has a bug in it somewhere in which the following happens: It goes halfway through the path and then goes to zero and ends the path for some reason.
For example the table is filled with the following:
all 0s, except for
[1][2], [1][3], [2][4], [2][5], [3][5], [4][6], [5][6], [6][0]
which all have a 1 in them. The desired paths are
P1: 1 2 4 6 0
P2: 1 3 5 6 0
P3: 1 2 5 6 0.
The output I get when i run the program is
12460
13560
1250
124
Any and all help on this is much appreciated, this is just the function that scans through the array looking for paths, I can add the entire program if that would be helpful. Thanks..
void find_path(int map[][MAX], int x){
int path =0;
int m=1;
int blah=0;
bool path_found = false;
do
{
for(int n=0;n<(x+1);n++){
if(map[m][n]==-1){
blah=(n+1);
if(blah<(x+1)){
for(blah;blah<(x+1);blah++){
if(map[m][blah]==1){
map[m][blah]=-1;
path=m;
path_found = true;
cout<<path;
m=blah;
n=0;
}
}
}
else{
path=m;
path_found=false;
cout<<path;
m=n;
if(m==0){
path=0;
cout<<path<<endl;
m=1;
path_found=false;
}
}
}
else if(map[m][n]==1){
map[m][n]=-1;
path=m;
path_found = true;
cout<<path;
m=n;
if(m==0){
path=0;
cout<<path<<endl;
m=1;
path_found=false;
}
}
}
}
while(m<(x+1) && path_found);
}