博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Sudoku Solver(数独游戏)
阅读量:6671 次
发布时间:2019-06-25

本文共 1512 字,大约阅读时间需要 5 分钟。

Write a program to solve a Sudoku puzzle by filling the empty cells.

Empty cells are indicated by the character '.'.

You may assume that there will be only one unique solution.

A sudoku puzzle...

...and its solution numbers marked in red.

dfs,一直寻找,不行返回即可:

1 class Solution { 2 public: 3     void solveSudoku(vector
>& board) { 4 doSudoku(board); 5 } 6 7 bool checkValid(vector
>&board, int x, int y) 8 { 9 for(int i = 0; i < 9; i++){10 if(i!=x)11 if(board[i][y] == board[x][y]) return false;12 }13 14 for(int j = 0; j < 9; j++){15 if(j != y)16 if(board[x][j] == board[x][y]) return false;17 }18 19 for(int i = (x/3) * 3; i < (x/3 + 1) * 3; ++i){20 for(int j = (y/3) * 3; j < (y/3 + 1) * 3; ++j){21 if((i!=x) || (j != y))22 if(board[x][y] == board[i][j]) return false;23 }24 }25 return true;26 }27 28 bool doSudoku(vector
> & board)29 {30 for(int row = 0; row < 9; ++row){31 for(int col = 0; col < 9; ++col){32 if(board[row][col] == '.'){33 for(int i = 1; i <= 9; ++i){34 board[row][col] = '0' + i;35 if(checkValid(board, row, col)){36 if(doSudoku(board)){37 return true;38 }39 } 40 board[row][col] = '.';41 }42 return false;43 }44 }45 }46 return true;47 }48 };

 

转载于:https://www.cnblogs.com/-wang-cheng/p/4986023.html

你可能感兴趣的文章
redhat 6.5 安装和配置zabbix客户端
查看>>
硬链接和软链接(2)
查看>>
几种REST服务JAVA客户端类库
查看>>
什么是Hijax?Hijax的原理及优缺点介绍
查看>>
【2016-03-17】移动互联网时代,看好你的隐私
查看>>
linux命令:编译安装postfix邮件服务
查看>>
vi命令集
查看>>
oracle数据库克隆
查看>>
输出 pdf
查看>>
PHPCMS一个BUG
查看>>
APP云测试
查看>>
3-unit3 高速缓存DNS
查看>>
spark mllib 协同过滤算法,基于余弦相似度的用户相似度计算
查看>>
openwrt 基于qmi的 3G|4G拨号
查看>>
俞敏洪励志语
查看>>
开源|基于TensorFlow的聊天机器人-ErGo
查看>>
lucene4.0入门1
查看>>
Svn结合hook实现自动更新及多Project管理更新
查看>>
第三十六讲:tapestry表单组件详解之PasswordField
查看>>
Ubuntu11.10下安装JDK+Eclipse+Maven
查看>>