一个计算数独的小程序

#include<iostream>
#include <string>
#include <fstream>
#include <cstdio>
#define NUMS 9
#define LEN 3
using namespace std;
int arr[NUMS][NUMS];
bool row_check(int r,int v){for(int i=0;i<NUMS;i++){if(arr[r][i]==v) return false;}return true;
}
bool col_check(int c,int v){for(int i=0;i<NUMS;i++){if(arr[i][c]==v) return false;}return true;
}
bool square_check(int t,int l,int b,int r,int v){printf("%d %d %d %d %d\n",t,l,r,b,v);for(int i=t;i<=b;i++){for(int j=l;j<=r;j++){if(arr[i][j]==v) return false;}}return true;
}
void nextIndex(int &r,int &c){if(c<NUMS-1) c++;else if(r<NUMS-1){c=0;r++;}else{r=-1;c=-1;}
}
bool solve(int r,int c){if(r==-1 || c==-1) return true;int r_=r,c_=c;if(arr[r][c]!=0) {nextIndex(r_,c_);return solve(r_,c_);}for(int i=1;i<=NUMS;i++){if(row_check(r,i)&&col_check(c,i)&&square_check(r/LEN*LEN,c/LEN*LEN,r/LEN*LEN+LEN-1,c/LEN*LEN+LEN-1,i)){arr[r][c]=i;nextIndex(r_,c_);if(solve(r_,c_)) return true;else arr[r][c]=0;}}return false;
}
bool solve(){return solve(0,0);
}
int main(){string filename;cout<<"Filename:";getline(cin,filename);ifstream in(filename);if(!in.good()){cout<<"Failed to open the file!"<<endl;return -1;}for(int i=0;i<NUMS;i++){for(int j=0;j<NUMS;j++){if(in.eof()){cout<<"The form of the file is wrong!"<<endl;in.close();return -1;}in>>arr[i][j];}}in.close();if(!solve()){cout<<"Failed to solve it!"<<endl;return -1;}for(int i=0;i<NUMS*NUMS;i++){cout<<arr[0][i]<<" ";if(i%NUMS==NUMS-1) cout<<endl;}return 0;
}

一个计算数独的小程序相关推荐

  1. Pyqt5入门--用qtdesigner设计一个计算屏幕PPI小程序(qtdesigner/pyuic/pyinstaller/python)

    本文利用python中的pyqt5包,设计一个计算PPI小程序的界面,再利用pyuic将界面的ui文件转为py文件.再新建一个py文件继承界面py文件中类,并定义每一个按钮对应的函数,完成后利用pyi ...

  2. python计算学分绩点的程序_模拟登录教务系统计算GPA的小程序

    做了一些小游戏之后开始慢慢体会敲代码是件体力活,慢慢熬总能熬出来的.这几天又心血来潮想写个程序模拟登录教务系统计算GPA的小程序.不过之前没有一点点网络编程的经验,就趁着期中考后放假4天,一点点把坑填 ...

  3. 如何用python写一个计算日期间隔的程序?

    如何用python写一个计算日期间隔的程序? 文章目录 如何用python写一个计算日期间隔的程序? 前言 问题梳理 问题解决 写在后面 前言 为什么想起来写一个这样的程序呢? 前几天聊天的时候,突然 ...

  4. python美元汇率兑换程序代码_还可以这样玩?用Python完成一个在线汇率转换小程序...

    原标题:还可以这样玩?用Python完成一个在线汇率转换小程序 大家好,小数在这里给大家拜个早年啦 今天给大家分享的是用Python完成一个在线汇率转换小程序,是基于一个持续更新的汇率网站实现的,让我 ...

  5. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  6. qt给qdialog加一个滚动条_这些小程序技巧,你敢说你一个用不到?

    都是小技巧,废话不多说,上代码! 改变小程序原生组件大小 微信官方提供了一些基本组件,但是有的组件没有提供类似size的属性,我们只需要一个css就可以解决,以radio为例: 小程序picker组件 ...

  7. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

  8. 还在想假期去哪玩?直接做一个旅游攻略小程序

    憋了几年好不容易解封准备出去散散心,但看着大江南北这么多景点是不是有点让你选择强迫症呢?那就先制作一个旅游攻略小程序看看驴友们的分享吧.

  9. [日推荐]『TheGolfGame』一个高端大气上档次的小程序

    今天小编再来给大家推荐一个高端大气上档次的小程序 TheGolfGame 简介:The Golf Game是基于高尔夫教学的服务平台,为用户提供最专业的高尔夫教学指导,大量的教学视频,更有娱乐视频,让 ...

最新文章

  1. 软件破解工具整理收集
  2. 关于node-sass安装失败的解决办法
  3. DedeCMS(织梦)安全设置经验分享
  4. Hadoop详解(五):HDFS HA 和 Federation
  5. 华为路由器 android,华为智能路由器亮相 Android系统很强大
  6. 男子吐槽:为什么那么多人不喜欢996,非要年纪轻轻进国企养老
  7. oracle 创建表同时添加注释
  8. Android Studio插件GsonFormat快速实现JavaBean
  9. macOS 10.10 u盘安装win7
  10. OutOfMemoryError(OOM)和StackOverflowError(SOF)异常总结
  11. 2012年终总结之pcode概述
  12. 如何友好提示vue3.0不再支持IE11及以下的浏览器版本
  13. Android 游戏设计教程:游戏元素和工具
  14. 剑三服务器维护是因为人太多吗,【剑网三相关 】阵营对战 从上午10点一直打到第二天凌晨6点半服务器维护 而且今天下午他们又开始打群架了...
  15. IE浏览器报错Unhandled promise rejection Error: 拒绝访问。文件流下载
  16. 【每日一词】subservient
  17. Vue.js学习详细课程系列--共32节(1 / 6)
  18. 全国计算机二级vb什么时候出来,关于全国计算机二级(VB)多少分可以过
  19. 以下面四个在读写器作用范围内的电子标签为例说明二进制树型搜索算法选择电子标签的迭代过程。假设这四个电子标签的序列号分别为:
  20. pycharm未识别python工具库的解决方法

热门文章

  1. 施乐 苹果 微软的爱恨情仇
  2. 论文阅读”NCAGC: A Neighborhood Contrast Framework forAttributed Graph Clustering“(arxiv)
  3. 【Python】PyQt5 Designer工具配置(前端界面设计工具)
  4. mapper-spring-boot-starter的使用
  5. [评估指标] 敏感性/特异性/PPV/NPV等指标原理与计算方法
  6. 网站域名被劫持、网站dns被劫持 域名跳转到别的网站的解决方法
  7. 关于联通主义是否不合时宜的一些思考
  8. 代码规范及格式化工具(vscode、clang-format、git)
  9. 镁光ddr3布线规则_PCB设计要点-DDR3布局布线技巧及注意事项
  10. 计算机组成原理——中央处理器cpu