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?
通过下面的 block 代码判断
if(solve(a))
{
return 1;
}
看来返回值0
表示尚未解决,返回值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?
我不知道。
这个功能有点马虎。你有 block :
if(index==101)
{
return 1;
}
如果index
等于101
,该函数将返回。如果不是,则转到下一条语句。因此声明:
if ( index != 101 )
是多余的。相应的else
将永远不会被执行,因为该函数已经返回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;
}
我希望简化版本能让您更轻松地了解回溯如何解决您的问题。
关于c - return 1 和 return 0 有什么不同?回溯在给定代码中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30587611/