演算法練習 數獨遊戲

2021-07-03 14:42:33 字數 2405 閱讀 4457

bool sudomatric::huishuosearch(vector* point_buff)//回朔法給數獨填數

else if (v.size() == 1)

else}}

} }//cout << "##########################" << endl;

//showsudo();

if (isnullvalue() != 0)

for (int k = 0; k < v.size(); k++)

sudo_data[i][j] = 0;

point_buff->clear();

}else

}v.clear();

return 1;//k次搜尋都失敗,返回1}}

} }else }

bool sudomatric::isnullvalue()//檢測是否全部填完

} return 0;

}void sudomatric::writenumber(vector* v)//寫到一半,發現寫錯了,應該整個函式遞迴

else if (v->size() == 1)

else}}

} }//對所有非唯一值進行回朔填寫

if (isnullvalue() != 0) }

void sudomatric::showsudo()//顯示

cout << endl;

if (i == 3 || i == 6) cout << "---------------------" << endl; }}

void sudomatric::capturedata()//捕獲資料,可以手動輸入,也可以初始化賦值

}*/

//固定陣列

//可以通過找唯一值填完

/*u8 data[9][9] = ,

, ,, ,

, , ,

};*/

u8 data[9][9] = ,,,

,,,,

,};for (int i = 1; i < 10; i++) }}

void sudomatric::findposiablevalue(u8 i, u8 j,vector* v)//找出i,j單元格的可能值,1表示可能,0表示不可能

memset(num_p, 1, 10);//9個數都有可能

memset(conflict, 1, 10);

for (int m= 1; m < 10; m++)

if (sudo_data[i][m] != 0)

else

} /*else if (sudo_data[i][m] != 0 && num_p[sudo_data[i][m]] == 0)*/

} memset(conflict, 1, 10);

for (int m = 1; m < 10; m++)

if (sudo_data[m][j] != 0)

else

} /*else if (sudo_data[m][j] != 0 && num_p[sudo_data[m][j]] == 0)*/

} int x = ((i - 1) / 3) * 3 + 1;

int y = ((j - 1) / 3) * 3 + 1;

memset(conflict, 1, 10);

for (int m = 0; m < 3; m++)

else

}/*else if (sudo_data[x + m][y + n] != 0 && num_p[sudo_data[x + m][y + n]] == 0)*/

} }for (int m = 1; m < 10; m++) }}

int _tmain(int argc, _tchar* argv)

clock_t end_time = clock();

cout << "##########################" << endl;

sudo.showsudo();

cout << "running time is: " << static_cast(end_time - start_time) / clocks_per_sec * 1000 << "ms" << endl;//輸出執行時間

return r;

}

leetcode 數獨遊戲

第乙個問題 用程式實現數獨的出題,而不是答題。換句話說就是驗證給定的乙個數獨中的九宮格,該九宮格是否滿足數獨遊戲的規則。數獨遊戲的規則是什麼 每一行沒有重複。每一列沒有重複。每乙個3x3的小格中沒有重複。方法一 一次迭代法 class solution validate a board for in...

數獨遊戲解密

includeusing namespace std struct board board myboard int grid 9 9 void initgrid board board int pregrid board board bool maybe board board,int i,int ...

數獨遊戲(sudoku)演算法 回溯 剪枝

具體數獨遊戲是什麼,我就不介紹了,好像多餘了,你能來看這篇文章,說明你對數獨遊戲已經有了相當的了解了!還是入正題吧,今天先講解和發下用回溯 剪枝 求數獨遊戲,我也看了些回溯 剪枝求數獨的演算法,很惱火,既沒注釋,而且演算法沒有通用性。今天我給大家講的回溯 剪枝法,不僅可以用於解決數獨問題,而且還可以...