网站栏目怎么做,wordpress woo theme,用js做网站,开发一个网上商城多少钱编写一个程序#xff0c;通过填充空格来解决数独问题。
数独的解法需 遵循如下规则#xff1a;
数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。#xff08;请参考示例图#xff09;
数独部分空…编写一个程序通过填充空格来解决数独问题。
数独的解法需 遵循如下规则
数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。请参考示例图
数独部分空格内已填入了数字空白格用 . 表示。 示例 1 输入board [[5,3,.,.,7,.,.,.,.],[6,.,.,1,9,5,.,.,.],[.,9,8,.,.,.,.,6,.],[8,.,.,.,6,.,.,.,3],[4,.,.,8,.,3,.,.,1],[7,.,.,.,2,.,.,.,6],[.,6,.,.,.,.,2,8,.],[.,.,.,4,1,9,.,.,5],[.,.,.,.,8,.,.,7,9]]
输出[[5,3,4,6,7,8,9,1,2],[6,7,2,1,9,5,3,4,8],[1,9,8,3,4,2,5,6,7],[8,5,9,7,6,1,4,2,3],[4,2,6,8,5,3,7,9,1],[7,1,3,9,2,4,8,5,6],[9,6,1,5,3,7,2,8,4],[2,8,7,4,1,9,6,3,5],[3,4,5,2,8,6,1,7,9]]
解释输入的数独如上图所示唯一有效的解决方案如下所示 提示
board.length 9board[i].length 9board[i][j] 是一位数字或者 .题目数据 保证 输入数独仅有一个
class Solution {
public:bool isvaild(int row,int col,char val,vectorvectorchar board){//rowfor(int i 0;i 9;i){if(board[row][i] val) return false;}//colfor(int j 0;j 9;j){if(board[j][col] val) return false;}//九宫格int startx (row/3)*3; // 假如在第一个九宫格row/30,再*30;int starty (col/3)*3; //假如在第二个九宫格row/31,再*33; 我直呼nbfor(int i startx;i startx3;i){for(int j starty;j starty3;j){if(board[i][j] val) return false;}}return true;}bool backtracking(vectorvectorchar board){for(int i 0;i board.size();i){for(int j 0;j board[0].size();j){//遇到空格if(board[i][j] .){for(char a 1;a 9;a){//判断这里应该填入啥数字合法if(isvaild(i,j,a,board)){board[i][j] a;//得将这个状态一直返回if(backtracking(board) true) return true;board[i][j] .; // 回溯}}return false; //填入0-9都不对都不合法填错了。}}}return true; //填完且填正确了。}void solveSudoku(vectorvectorchar board) {backtracking(board);}
};