数独算法 C++

这个博客介绍了一个用C++编写的数独求解程序。通过定义一个`sudo`类,程序实现了读取数独初始状态、检查单元格合法性、回溯填充空白单元格等功能。利用深度优先搜索(DFS)策略来解决数独问题,当找到解决方案时设置标志变量`sign`为真并返回。最后展示填充完整的数独数组。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

#include<iostream>
#include<fstream>
#include<stdexcept>
using namespace std;
static bool sign=false;
ifstream &open_file(ifstream &in, string &file)

{
    in.close();
    in.clear();
    in.open(file.c_str());
    return in;
}
class sudo
{
public:
    void getArray();
    bool checkArray(int num, int i, int j);
    void fillArray(int n);
    friend ifstream &open_file(ifstream &in, string &file);
    void displayArray();
    bool Check(int n, int key);
    void DFS(int n);
private:
    int Array[9][9];

};
void sudo::getArray()
{
    string file_name;
    cout<<"plesae input the filename"<<endl;
    cin>>file_name;
    ifstream in;
    open_file(in,file_name);
    if(!in)
        throw runtime_error("cannot open the file !");
    int number;
    for(int i=0;i<9;i++)
        for(int j=0;j<9;j++){
            in>>number;
            Array[i][j]=number;
        }
}
void sudo::fillArra

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值