源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-02 03:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c++递归解数独方法示例
[u]复制代码[/u] 代码如下:
#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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部