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 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?

通过以下区块代码判断

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;
}

我希望简化版本能让你更容易地弄清楚回溯是如何解决你的问题的。