• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c++递归解数独方法示例

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++子类调用父类方法,c++中排序的方法,c++闰年的计算方法,c++使用方法,c++排序方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在C++中反射调用.NET的方法(一)
  • 在C++中反射调用.NET的方法(二)
  • 在C++中反射调用.NET的方法(三)
  • 浅谈C++ 基类指针和子类指针的相互赋值
  • c++递归解数独方法示例

相关文章

  • 2017-05-28标准CSV格式的介绍和分析以及解析算法实例详解
  • 2017-05-28C语言开发简易版扫雷小游戏
  • 2017-05-28C语言切割多层字符串(strtok_r strtok使用方法)
  • 2017-05-28c++ 中__declspec 的用法详解
  • 2017-05-28C语言实现的猴子偷桃之类算法
  • 2017-05-28new和malloc的区别深入解析
  • 2017-05-28C++德州扑克的核心规则算法
  • 2022-04-30C语言加减乘除运算
  • 2017-05-28C++位操作的常见用法小结
  • 2017-05-28哈夫曼算法构造代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++跳转语句之Goto对变量定义的影响详解
    • C语言中的小数(float,double)
    • C++ vector的用法小结
    • 讲解C++中的枚举类型以及声明新类型的方法
    • VC++实现程序开机启动运行的方法
    • C++ COM编程之什么是接口?
    • C语言求向量和的两则问题解答分享
    • c语言输出字符串中最大对称子串长度的3种解决方案
    • C++ AfxBeginThread的介绍/基本用法
    • C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有