• Sudoku Solver


    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.

    思路:这道题给你列出一些数字,然后完成后面的数独操作。首先我们定义一个函数判断每一行、每一列以及九宫格内是否存在相同的元素,如果存在则返回false;然后,对每一行每一列进行遍历,如果该位置为'.'时,按照1~9字符替换,并同时判断是否符合数独要求以及回溯遍历该数独,满足条件则返回true,如果不满足,则重新替换为'.',再进行判断。

    class Solution {
    public:
        bool IsSudoku(vector<vector<char> > &board,int x,int y)
        {
            int i,j;
            for(i=0;i<9;i++)
            {
                if(i!=x&&board[i][y]==board[x][y])
                {
                    return false;
                }
            }
            for(j=0;j<9;j++)
            {
                if(j!=y&&board[x][j]==board[x][y])
                    return false;
            }
            int m=(x/3)*3;
            int n=(y/3)*3;
            for(i=0;i<3;i++)
            {
                for(j=0;j<3;j++)
                {
                    if((i+m!=x)&&(j+n!=y)&&board[i+m][j+n]==board[x][y])
                        return false;
                }
            }
            return true;
        }
        bool Sudoku(vector<vector<char> > &board)
        {
            for(int i=0;i<9;i++)
            {
                for(int j=0;j<9;j++)
                {
                    if(board[i][j]=='.')
                    {
                        for(char k='1';k<='9';k++)
                        {
                            board[i][j]=k;
                            if(IsSudoku(board,i,j)&&Sudoku(board))
                                return true;
                            board[i][j]='.';
                        }
                        return false;
                    }
                }
            }
            return true;
        }
        void solveSudoku(vector<vector<char> > &board) {
            Sudoku(board);
        }
    };
  • 相关阅读:
    django1.6 django-dajaxice的安装配置.
    jquery js ajax 不错的想法
    django1.6 GET url传参 乱码
    django1.6 CSRF verification failed. Request aborted. 用出现表单提交
    Caml语句中筛选lookup字段
    sharepoint Jsom一些基本操作
    JSOM启动工作流
    数据量太大时,如何实现分页查询-CSOM
    数据量太大时,如何实现分页查询-JSOM
    JS加强学习-DOM学习02
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3790650.html
Copyright © 2020-2023  润新知