程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode第一刷_Sudoku Solver

leetcode第一刷_Sudoku Solver

編輯:C++入門知識

這道題簡直是恥辱啊,居然被嚇得不敢做,終於開始寫還犯下了各種低級錯誤,花了好久的時間。

其實如果想明白81*9其實是很小的規模的話,早就想到用回溯法了,這不是跟八皇後完全一樣的嘛。每次填入的時候,驗證一下合不合理,其中合不合理在上一個問題中已經討論過了,對當前位置討論更簡單。

所的頭頭是道,你會問“那你是錯在哪呢?”你猜啊。我在判斷一個小方格時候合理時,走了很多彎路。一開始想的是用循環和減法,找到當前位置所在的小方格最左上角的位置。其實完全不用啊親,當聽到實驗室的同學說3*(i/3)和3*(j/3)直接就是時,我眼淚都掉下來了,蠢爆了。還有,在判斷board上的字符等不等於當前字符p時,我居然寫出了board[i][j]=='p'這種驚天地泣鬼神的代碼,給自己跪了。p傳進去的就是字符格式了,在數獨的棋盤上到哪找等於‘p’的位置啊。。

class Solution {
public:
    int MAX = 9;
    bool flag = false;
    bool isValide(vector > &board, char p, int i, int j){
        for(int k=0;k > &board, int pos){
        if(pos == 81)   {flag = true; return;}
        int i=pos/MAX, j=pos%MAX;
        if(isdigit(board[i][j])){  
            fileSudo(board, pos+1);
        }else{
            for(char p='1';p<='9';p++){
            	//cout< > &board) {
        fileSudo(board, 0);
    }
};



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved