用C++实现的解数独(Sudoku)程序

我是一个C++初学者,控制台实现了一个解数独的小程序。下面粘贴代码。
- 我英语没学好,不会给变量和函数命名。以后还想添加以下功能:

  • 随机生成数独
  • 实现解题步骤的输出
  • 判断数独是否具有唯一解
  • 图形化界面

代码如下:

//"数独游戏"V1.0
//李国良于2016年11月11日编写完成

#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>

using namespace std;

const int ArSize = 9;

string loadFile(int arr[ArSize][ArSize]);//读取文件,返回文件名
void printMap(int arr[ArSize][ArSize]);//显示数独
void solve(int arr[ArSize][ArSize], int enumer[ArSize], int i, int j);//计算当前单元格的候选数
bool solveV(int arr[ArSize][ArSize], int i, int j);//判断当前单元格是否可填
bool lopMap(int arr[ArSize][ArSize]);//循环遍历未解单元格,调用solveV求解
bool loopMap(int arr[ArSize][ArSize]);//暴力求解!!!
void saveFile(int arr[ArSize][ArSize], string str);//保存文件

int main()
{
    SetConsoleTitle("数独游戏");
    int map[ArSize][ArSize];
    for (auto &row : map)
        for (auto &ival : row)
            ival = -1;
    string name = loadFile(map);
    printMap(map);
    bool surplus = lopMap(map);
    cout << "lopMap()解答完毕" << endl;
    printMap(map);
    if (!surplus)
    {
        loopMap(map);
        cout << "loopMap()解答完毕" << endl;
        printMap(map);
    }
    saveFile(map, name);
    cin.get();
    cin.get();
    return 0;
}

string loadFile(int arr[ArSize][ArSize])
{
    string fileName;
    ifstream inFile;
    cout << "请输入文件名:" << endl;
    while (true)
    {
        cin >> fileName;
        inFile.open(fileName + ".txt");
        if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值