C语言学习日记(17)——回溯法解数独(2)

本文记录了使用C语言通过回溯法解决数独问题的过程。作者强调了在编程时详细分析和定义变量及操作顺序的重要性,提出了两个关键规则确保代码逻辑清晰:1) 填充数字后更新top指针;2) 回退时检查top是否为-1。程序运行展示了回溯法在数独求解中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过前面的分析,就可以写出解数独的代码了。

#include <stdio.h>    
void fill(int sd[][9]);       //使用回溯法求解数独
int main()
{
    int sd[9][9] = {  //  “世界最难数独”信息   
        8,0,0,0,0,0,0,0,0,
        0,0,3,6,0,0,0,0,0,
        0,7,0,0,9,0,2,0,0,
        0,5,0,0,0,7,0,0,0,
        0,0,0,0,4,5,7,0,0,
        0,0,0,1,0,0,0,3,0,
        0,0,1,0,0,0,0,6,8,
        0,0,8,5,0,0,0,1,0,
        0,9,0,0,0,0,4,0,0,
        };               
    fill(sd);  //调用函数求解
    return 0;
}
///////////////////////////////////////////////////////////////
void fill(int sd[][9])
{
    int result = 0;    //result用于记录解的个数,初始为0
    int count = 0;   //count用于记录需要填的空格数量,初始为0
    int blank[81][2];    //blank数组用于记录所有需要填的空格的坐标           

    for(int i = 0;i < 9;i++)                     ////////////////////
        for(int j = 0;j < 9;j++)                //  
            if(sd[i][j] == 0)                       // 
            {                                             //     将整个数独扫描一遍,
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值