return 1 和 return 0 有什么区别?以及回溯如何在给定代码中工作?
What is different between return 1 and return 0? And how backtracking work in given code?
int solve(int a[])
{
int index,i;
index=find_index(a);
if(index==101)
{
return 1;
}
if(index!=101)
{
for(i=1;i<=9;i++)
{
if(cheak_coll(a,i,index)==1 && cheak_grid(a,i,index)==1 && cheak_row(a,i,index)==1)
{
a[index]=i;
if(solve(a))
{
return 1;
}
a[index]=0;
}
}
}
else
{
return 1;
}
return 0;
}
在给定的示例中,return 1
和 return 0
之间有什么不同?
我用 int fun()
代替了 bool fun()
。在 bool 函数中 return true 和 return false 与 return 1
和 return 0
相同吗?
回溯在这段代码中是如何工作的?
In given example what is different between return 1 and return 0?
通过以下区块代码判断
if(solve(a))
{
return 1;
}
似乎 return 值 0
表示尚未解决,return 值 1
表示已解决。
I us int fun()
in place bool fun()
. In bool function return true
and return false
are same as return 1
and return 0
?
是的。
And how backtracking work in this code?
我不知道。
功能有点马虎。你有块:
if(index==101)
{
return 1;
}
如果index
等于101
,函数将return。如果不是,它将转到下一条语句。因此声明:
if ( index != 101 )
是多余的。相应的 else
永远不会被执行,因为该函数已经 returned if ( index == 101 )
.
函数可以简化为:
int solve(int a[])
{
int index,i;
index=find_index(a);
if(index==101)
{
return 1;
}
for(i=1;i<=9;i++)
{
if(cheak_coll(a,i,index)==1 && cheak_grid(a,i,index)==1 && cheak_row(a,i,index)==1)
{
a[index]=i;
if(solve(a))
{
return 1;
}
a[index]=0;
}
}
return 0;
}
我希望简化版本能让你更容易地弄清楚回溯是如何解决你的问题的。
int solve(int a[])
{
int index,i;
index=find_index(a);
if(index==101)
{
return 1;
}
if(index!=101)
{
for(i=1;i<=9;i++)
{
if(cheak_coll(a,i,index)==1 && cheak_grid(a,i,index)==1 && cheak_row(a,i,index)==1)
{
a[index]=i;
if(solve(a))
{
return 1;
}
a[index]=0;
}
}
}
else
{
return 1;
}
return 0;
}
在给定的示例中,return 1
和 return 0
之间有什么不同?
我用 int fun()
代替了 bool fun()
。在 bool 函数中 return true 和 return false 与 return 1
和 return 0
相同吗?
回溯在这段代码中是如何工作的?
In given example what is different between return 1 and return 0?
通过以下区块代码判断
if(solve(a))
{
return 1;
}
似乎 return 值 0
表示尚未解决,return 值 1
表示已解决。
I us
int fun()
in placebool fun()
. In bool functionreturn true
andreturn false
are same asreturn 1
andreturn 0
?
是的。
And how backtracking work in this code?
我不知道。
功能有点马虎。你有块:
if(index==101)
{
return 1;
}
如果index
等于101
,函数将return。如果不是,它将转到下一条语句。因此声明:
if ( index != 101 )
是多余的。相应的 else
永远不会被执行,因为该函数已经 returned if ( index == 101 )
.
函数可以简化为:
int solve(int a[])
{
int index,i;
index=find_index(a);
if(index==101)
{
return 1;
}
for(i=1;i<=9;i++)
{
if(cheak_coll(a,i,index)==1 && cheak_grid(a,i,index)==1 && cheak_row(a,i,index)==1)
{
a[index]=i;
if(solve(a))
{
return 1;
}
a[index]=0;
}
}
return 0;
}
我希望简化版本能让你更容易地弄清楚回溯是如何解决你的问题的。