gpt4 book ai didi

c - return 1 和 return 0 有什么不同?回溯在给定代码中如何工作?

转载 作者:行者123 更新时间:2023-11-30 19:42:49 25 4
gpt4 key购买 nike

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 1return 0 之间有什么不同?

我使用了int fun()来代替bool fun()。 bool 函数中 return true 和 return false 与 return 1return 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 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?

我不知道。

这个功能有点马虎。你有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com