描述

请编写一个程序,给数独中的剩余的空格填写上数字

空格用字符'.'表示

假设给定的数独只有唯一的解法

这盘数独的解法是:

红色表示填上的解

示例1

输入:

[[.,.,9,7,4,8,.,.,.],[7,.,.,.,.,.,.,.,.],[.,2,.,1,.,9,.,.,.],[.,.,7,.,.,.,2,4,.],[.,6,4,.,1,.,5,9,.],[.,9,8,.,.,.,3,.,.],[.,.,.,8,.,3,.,2,.],[.,.,.,.,.,.,.,.,6],[.,.,.,2,7,5,9,.,.]]

返回值:

[[5,1,9,7,4,8,6,3,2],[7,8,3,6,5,2,4,1,9],[4,2,6,1,3,9,8,7,5],[3,5,7,9,8,6,2,4,1],[2,6,4,3,1,7,5,9,8],[1,9,8,5,2,4,3,6,7],[9,7,5,8,6,3,1,2,4],[8,3,2,4,9,1,7,5,6],[6,4,1,2,7,5,9,8,3]]
//dfs
class Solution
{
public:int a[88][2],cnt;bool dfs(int p,vector<vector<char> > &board){if(p==cnt)return true;int x=a[p][0],y=a[p][1];int flag[11];memset(flag,0,sizeof(flag));for(int i=0;i<9;i++){if(board[x][i]!='.')flag[board[x][i]-'0']=1;if(board[i][y]!='.')flag[board[i][y]-'0']=1;}int xx=x/3,yy=y/3;for(int i=3*xx;i<3*xx+3;i++)for(int j=3*yy;j<3*yy+3;j++)if(board[i][j]!='.'){flag[board[i][j]-'0']=1;}for(int i=1;i<=9;i++)if(flag[i]==0){board[x][y]='0'+i;   if(!dfs(p+1,board))board[x][y]='.';elsereturn true;}return false;}void solveSudoku(vector<vector<char> > &board) {int i,j;cnt=0;for(i=0;i<9;i++)for(j=0;j<9;j++)if(board[i][j]=='.'){a[cnt][0]=i;a[cnt++][1]=j;}dfs(0,board);}
};

(每日一练c++)CC113 数独相关推荐

  1. Python每日一练0023

    问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os > ...

  2. WindowsAPI每日一练(2) 使用应用程序句柄

    WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.htmlWindowsAPI每日一练(1) WinMain Win ...

  3. python题目关于企业利润_【每日一练】巧用python实现利润计算

    原标题:[每日一练]巧用python实现利润计算 相信很多小伙伴都遇到过阶梯利率的问题,比如说银行的利息计算,不同阶段的本金有不同的利率:税务的税费计算,不同的营收有不同的缴纳率:个人的提成,不同的销 ...

  4. Python每日一练0004

    问题 如何保存迭代对象的最后N个元素 例如保存列表['a', 'b', 'c', 'd']的最后2个元素 或者保存某个迭代器对象的最后5个元素 解决方案 对于列表.元组这样的数据结构,可以使用切片来很 ...

  5. python 编程一日一练-python每日一练

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...

  6. python 编程一日一练-「每日一练」巧用python生成随机数

    原标题:「每日一练」巧用python生成随机数 随机数在我们的生产和生活中有很多的应用场景,比如说登录验证的随机数字等等,那么你知道在Python中怎么生成随机数吗? 往下看,就是这么简单! 题目 p ...

  7. python输出乘法口诀-【每日一练】python输出 9*9 乘法口诀表

    原标题:[每日一练]python输出 9*9 乘法口诀表 无论学哪种程序,哪一门语言都对输出9*9 乘法口诀表情有独钟,记得学VB的时候,需要好长一段代码才实现,那么你知道用Python输出,需要几行 ...

  8. python 编程一日一练-Python每日一练0022

    问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...

  9. python 编程一日一练-Python每日一练0013

    问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在. 解决方案 使用collections库的ChainMap类,可以快速的将多个d ...

  10. Python每日一练0018

    问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. Python的float类型是存在误差的 >>> a = 1.1 >>> b = 2.2 & ...

最新文章

  1. pidstat 命令详解(转载)
  2. 全部编程皆为Web编程
  3. 自备干货!如何有效的做竞品迭代分析
  4. 京东云上集市谋定中国农民丰收节交易会 建九江电商产业园
  5. 我常用的Markdown公式符号
  6. “通信航母”横空出世!
  7. 这10道大厂Java面试题,我敢打赌90%的人都不会!!!
  8. 我的Android进阶之旅------Android ListView优化详解
  9. 使用GameKit实现IOS设备之间的蓝牙通信
  10. CMU 15-213 Introduction to Computer Systems学习笔记(8) Machine-Level Programming-Advanced
  11. cmd编译java代码
  12. NAND FLASH简介
  13. android 高德地图 logo,Android高德之旅(3)UI Setting
  14. 盘点下玩过的解谜游戏
  15. 使用pyenv和virtualenv搭建python虚拟环境实践总结
  16. java 调用autoit_java和autoit连接
  17. 武汉新时标文化传媒有限公司抖音电商的算法逻辑
  18. Go开发中配置一个Logger日志的功能实现(结合zap日志库)
  19. Failed to connect to github.com port 443: Timed out 及 ping github.com请求超时
  20. php 解压dat,如何打开dat文件?

热门文章

  1. oracle存储过程语法累加,Oracle 存储过程语法总结及练习
  2. 双u服务器装win7系统安装,u深度一键u盘装原版win7 安装系统详细使用教程
  3. 关闭compactos_开启Compact压缩Win10系统文件,为Win10系统盘瘦身
  4. 文字转语音合成器哪个好?这些文字转语音软件值得收藏
  5. Controlling the Amount of Verbatim Copying in Abstractive Summarization
  6. linux 文件追加,如何在Linux中将文本内容追加到文件末尾?
  7. 嵌入式单片机基础篇(二十三)之串口通信
  8. HTML中Table去掉两边的边框
  9. css里dotted,CSS中dashed和dotted的区别有哪些
  10. PS 滤镜算法原理 ——马赛克