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

标签 c function boolean return backtracking

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/

相关文章:

java - C中的简单数据序列化

c++ - 在 C/C++ 中是否可以在编译时将函数名称放入代码中?

javascript - 如何延迟淡入并从 onclick 滑动 div

c# - 声音播放器问题? boolean 语句应执行声音

将 `while` 循环转换为 `for` 循环

c - 通过线程和 SIMD 并行化矩阵乘法

c++ - 函数头和重载函数的多个错误

java - `java (0 % 2 != 0) == false`

python - "or"运算符不返回 bool 的动机是什么?

c - 结构赋值给出 "expected an expression"