93 lines
2.9 KiB
C++
93 lines
2.9 KiB
C++
|
//#include <iostream>
|
|||
|
//#include <vector>
|
|||
|
//#include <functional>
|
|||
|
//using namespace std;
|
|||
|
//
|
|||
|
//bool isValidMove(vector<vector<int>>& board, vector<vector<bool>>& rows, vector<vector<bool>>& cols, vector<vector<bool>>& subgrids, int row, int col, int num) {
|
|||
|
// return !rows[row][num] && !cols[col][num] && !subgrids[row / 3 * 3 + col / 3][num];
|
|||
|
//}
|
|||
|
//
|
|||
|
//bool solveSudoku(vector<vector<int>>& board) {
|
|||
|
// vector<vector<bool>> rows(9, vector<bool>(10, false)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// vector<vector<bool>> cols(9, vector<bool>(10, false)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// vector<vector<bool>> subgrids(9, vector<bool>(10, false)); // <20>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//
|
|||
|
// // <20><><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>̳<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// for (int i = 0; i < 9; ++i) {
|
|||
|
// for (int j = 0; j < 9; ++j) {
|
|||
|
// int num = board[i][j];
|
|||
|
// if (num != 0) {
|
|||
|
// rows[i][num] = true;
|
|||
|
// cols[j][num] = true;
|
|||
|
// subgrids[i / 3 * 3 + j / 3][num] = true;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// // ʹ<>û<EFBFBD><C3BB>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// function<bool(int, int)> backtrack = [&](int row, int col) -> bool {
|
|||
|
// if (row == 9) {
|
|||
|
// return true; // <20><><EFBFBD>е<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// }
|
|||
|
//
|
|||
|
// if (board[row][col] == 0) {
|
|||
|
// for (int num = 1; num <= 9; ++num) {
|
|||
|
// if (isValidMove(board, rows, cols, subgrids, row, col, num)) {
|
|||
|
// board[row][col] = num;
|
|||
|
// rows[row][num] = true;
|
|||
|
// cols[col][num] = true;
|
|||
|
// subgrids[row / 3 * 3 + col / 3][num] = true;
|
|||
|
//
|
|||
|
// if (col == 8) {
|
|||
|
// if (backtrack(row + 1, 0)) {
|
|||
|
// return true;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// else {
|
|||
|
// if (backtrack(row, col + 1)) {
|
|||
|
// return true;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// board[row][col] = 0;
|
|||
|
// rows[row][num] = false;
|
|||
|
// cols[col][num] = false;
|
|||
|
// subgrids[row / 3 * 3 + col / 3][num] = false;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
// else {
|
|||
|
// if (col == 8) {
|
|||
|
// return backtrack(row + 1, 0);
|
|||
|
// }
|
|||
|
// else {
|
|||
|
// return backtrack(row, col + 1);
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// return false; // û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ƶ<EFBFBD>
|
|||
|
// };
|
|||
|
//
|
|||
|
// return backtrack(0, 0);
|
|||
|
//}
|
|||
|
//
|
|||
|
//int main() {
|
|||
|
// vector<vector<int>> sudokuBoard(9, vector<int>(9, 0));
|
|||
|
//
|
|||
|
// for (int i = 0; i < 9; ++i) {
|
|||
|
// for (int j = 0; j < 9; ++j) {
|
|||
|
// cin >> sudokuBoard[i][j];
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// if (solveSudoku(sudokuBoard)) {
|
|||
|
// for (const auto& row : sudokuBoard) {
|
|||
|
// for (int num : row) {
|
|||
|
// cout << num << " ";
|
|||
|
// }
|
|||
|
// cout << endl;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// return 0;
|
|||
|
//}
|