hi,

I have a program like below:

the problem is the backtrack() will return me more than one set of (newt[N][i][j] != 0), but only first set goes to addpath(N, i, j). how can I let the program run every set of (newt[N][i][j] != 0)?

---------------------------------------

main ()

{

backtrack();

system("pause");

return 0;

}

void backtrack(void)

{

for (i=0; i<3;i++){

for (j=0; j<3; j++) {

if (newt[N][i][j] != 0)

{

addpath(N, i, j);

}//end if

}// 3rd for

} // 2nd for

}

----------------------------------------------------------------------------

<ps> the addpath(N, i, j) will continue call other functions.....but I am sure that the final function is looks like

void addpath (int s, int i, int j)

{

if( s == 0 )

{

printf("final path is %d%d%d : \n",s,i,j);

printf("finish!!\n");-------------------------------------------->> end here

return;

}

call other functions....

}

I have a program like below:

the problem is the backtrack() will return me more than one set of (newt[N][i][j] != 0), but only first set goes to addpath(N, i, j). how can I let the program run every set of (newt[N][i][j] != 0)?

--------------------------

main ()

{

backtrack();

system("pause");

return 0;

}

void backtrack(void)

{

for (i=0; i<3;i++){

for (j=0; j<3; j++) {

if (newt[N][i][j] != 0)

{

addpath(N, i, j);

}//end if

}// 3rd for

} // 2nd for

}

--------------------------

<ps> the addpath(N, i, j) will continue call other functions.....but I am sure that the final function is looks like

void addpath (int s, int i, int j)

{

if( s == 0 )

{

printf("final path is %d%d%d : \n",s,i,j);

printf("finish!!\n");-----

return;

}

call other functions....

}

I got it... by the way, can I ask you last question?

Since I might got couple sets of i , j (newt[N][i][j] != 0) to put in addpath(N, i, j), how can I design my addpath() to know each set of i, j and how many times ddpath(N, i, j) has called

<ps>

this is because my program need to know each set of i,j and also addpath() will respond different actions every time called

--------------------------

if (newt[N][i][j] != 0)

{

addpath(N, i, j);

}//end if

void addpath (int s, int i, int j)

{

if( s == 0 )

{

printf("final path is %d%d%d : \n",s,i,j);

printf("finish!!\n");

return;

}

call other functions....

}

put some global variables

int counter = 0;

int pathN[100];//say maximum is 100

int pathI[100];

int pathJ[100];

and inside ddpath() add thease lines.

pathN[count] =s;

pathI[count] = i;

pathJ[count] =j;

count++;//increase the counter

to view the call informations use this function

void show()

{

printf("Number of times ddpath called = %d\n",count);

for(int i=0;i<count;i++)

printf("Sets of values (%d,%d%d)\n",pathN[i],path

}

~marchent~

thanks, marchent

since this is different question, I guess i should closed this one and open another.

I have open another question, base on this idea...could you please take a look. thanks in advance.

http://www.experts-exchange.com/Programming/Programming_Languages/C/Q_22059132.html

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.

Where are i and j declared? If they are declared global then they are probably being changed elsewhere.

Paul