再帰を使用して、から始まるまでの数字1
のパスを見つける必要があります。下か右しか行けません。ほとんどの場合、問題はありません。私の問題は、行き場がなく、一歩後退する必要があるときだけです。matrix[R][C]
matrix[0][0]
matrix[R-1][C-1]
例ごとに、これは私がファイルから取得しているマトリックスです:
1 0 0 0 0 0
1 1 0 0 0 0
1 1 0 0 0 0
1 1 1 1 0 1
1 0 1 1 1 1
0 1 0 1 1 1
問題は、 になったときmatrix[4][0]
です。再帰で戻らない理由がわかりません。true を返す必要があるときに false を返します。
これはコードです:
int findPath(int matrix[][C],int rowSize,int colSize)
{
int a=0,b=0;
if(Find_Path(matrix,rowSize,colSize,a,b)==0)
{
printf("The function return - False\n");
return 0;
}
else
{
printf("The function return - True\n");
return 1;
}
}
int Find_Path(int matrix[][C],int rowSize,int colSize,int a,int b)
{
if(a==(rowSize-1) && (b==colSize-1))
return 1;
if(matrix[a+1][b]==1)
return Find_Path(matrix,rowSize-1,colSize-1,a+1,b);
if(matrix[a][b+1]==1)
return Find_Path(matrix,rowSize-1,colSize-1,a,b+1);
if(matrix[a+1][b]==0 && matrix[a][b+1]==0)
return 0;
}