c++递归解数独方法示例

 更新时间:2014年03月28日 10:00:43   作者:  
这篇文章主要介绍了c++递归解数独方法示例,需要的朋友可以参考下

复制代码 代码如下:

#include<iostream>

using namespace std;

void init();
void function(int m);
int canplace(int row,int col,int c);
void outputresult();

int a[9][9], maxm = 0;

int main()

 init();
 function(0);
 return 0;
}
void init()
{
 int i, j;
 for(i = 0; i < 9; i++)
 {
  for(j = 0; j < 9; j++)
  {
   cin >> a[i][j];
  }
 }
}
void function(int m)
{
 int i, j, row, col;
 if (m >= 81)
 {
  outputresult();
 }
 else
 {
  row = m / 9;
  col = m % 9;
  if(a[row][col] != 0)
  {
   function(m+1);
  }
  for(i = 1; i <= 9; i++)
  {
   if(canplace(row,col,i) == 1)
   {
    a[row][col] = i;
    function(m + 1);
    a[row][col] = 0;
   }
  }

 }
}
int canplace(int row,int col,int c)
{
 int i, j;
 int flag = 1;

 for(i = 0; i < 9; i++ )
 {
  if(a[row][i] == c || a[i][col] == c)
  {
   flag = 0;
   break;
  }
 }
 if(flag != 0)
 {
  for(i = (row / 3) * 3; i < (row / 3) * 3 + 3; i++)
  {
   for(j = (col / 3) * 3; j < (col / 3) * 3 + 3; j++)
   {
    if(a[i][j] == c)
    {
     flag = 0;
     break;
    }
   }
   if(flag == 0)
   {
    break;
   }
  }
 }
 return flag;
}
void outputresult()
{
 int i, j;

 for(i = 0; i < 9; i++)
 {
  if(i % 3 == 0)
  {
   cout << endl;
  }
  for(j = 0; j < 9; j++)
  {
   if(j % 3 == 0)
   {
    cout << " ";
   }
   cout << a[i][j] << " ";
  }
  cout << endl;
 }
 cout << endl;
}

相关文章

  • 将 C++ 类型属性暴露给 QML

    将 C++ 类型属性暴露给 QML

    这篇文章主要介绍了将 C++ 类型属性暴露给 QML, QML 是一种基于 JavaScript 的声明式语言。在 Qt5中,QML有了长足进步,并且同 C++ 并列成为 Qt 的首选编程语言下面一起进入文章学习 QML的条件下也看看如何将将 C++ 类型属性暴露给 QML,需要的朋友可以参考一下
    2021-12-12
  • opencv3/C++ 使用Tracker实现简单目标跟踪

    opencv3/C++ 使用Tracker实现简单目标跟踪

    今天小编就为大家分享一篇opencv3/C++ 使用Tracker实现简单目标跟踪,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • c++语言中虚函数实现多态的原理详解

    c++语言中虚函数实现多态的原理详解

    这篇文章主要给大家介绍了关于c++语言中虚函数实现多态的原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c++语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C C++算法题解LeetCode1408数组中的字符串匹配

    C C++算法题解LeetCode1408数组中的字符串匹配

    这篇文章主要为大家介绍了C C++算法题解LeetCode1408数组中的字符串匹配示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • c语言_构建一个静态二叉树实现方法

    c语言_构建一个静态二叉树实现方法

    下面小编就为大家带来一篇c语言_构建一个静态二叉树实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Qt实现两个独立窗口的信号通信

    Qt实现两个独立窗口的信号通信

    这篇文章主要为大家详细介绍了Qt实现两个独立窗口的信号通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C++演讲比赛管理系统实现流程实例

    C++演讲比赛管理系统实现流程实例

    这篇文章主要介绍了C++演讲比赛管理系统实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 如何用C语言生成简单格式的xml

    如何用C语言生成简单格式的xml

    本篇文章是对使用C语言生成简单格式的xml的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言编程C++旋转字符操作串示例详解

    C语言编程C++旋转字符操作串示例详解

    这篇文章主要为大家介绍了C语言编程中C++旋转字符操作串示例详解,文中附含详细图文示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • C语言中的字符串数据在C中的存储方式

    C语言中的字符串数据在C中的存储方式

    这篇文章主要介绍了C语言中的字符串数据在C中的存储方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论