echo~7s& 2021-07-13 15:38 采纳率: 0%
浏览 24

求具体分析:数独求解

在百度上搜到了一个代码,可以运行,想知道这个代码都代表了什么,用了什么方法,希望能详细分析。
#include <stdio.h>
#include <stdlib.h>
int fillnumber(int a[9][9][10],int number,int i,int j){
for (int k=0;k<9;k++)
{
a[i][k][number]++;
a[k][j][number]++;
}
for (int n=0;n<3;n++)
{
for (int m=0;m<3;m++)
{
a[i/3
3+n][j/33+m][number]++;
} }
return 0;
}
int resetnumber(int a[9][9][10],int number,int i,int j){
for (int k=0;k<9;k++)
{
a[i][k][number]--;
a[k][j][number]--;
}
for (int n=0;n<3;n++) {
for (int m=0;m<3;m++)
{
a[i/3
3+n][j/3
3+m][number]--;
} }
return 0;
}
void search(int step, int a[9][9],int g[9][9][10]){
if (step==0)
{
for (int i=0;i<9;i++)
{
for (int j=0;j<9;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
exit(0);
}
for (int i=0;i<9;i++)
{
for (int j=0;j<9;j++)
{
if (a[i][j]==0)
{
for (int
number=1;number<10;number++)
{
if (g[i][j][number]==0)
{
fillnumber(g,number,i,j); a[i][j]=number;
search(step-1,a,g);
a[i][j]=0; resetnumber(g,number,i,j);
} }
return;
} } }}
int main(int argc, const char * argv[])
{
int a[9][9];
int abool[9][9][10];
int step=0;
for (int i =0;i<9;i++)
{
for (int j=0;j<9;j++)
{
for (int k=1;k<10;k++)
{
abool[i][j][k]=0;
} } }
for (int i =0;i<9;i++)
{
for (int j=0;j<9;j++)
{
scanf("%d",&a[i][j]);
if (a[i][j]==0)
{
step++;
}
else
{
fillnumber(abool,a[i][j],i,j);
} } }
search(step,a,abool);
return 0;}

  • 写回答

1条回答 默认 最新

  • 吴NDIR 2023-02-03 11:33
    关注

    发代码块

    评论

报告相同问题?

问题事件

  • 创建了问题 7月13日

悬赏问题

  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥50 安装pyaudiokits失败