teacher_code_c/数独.cpp

93 lines
2.9 KiB
C++
Raw Permalink Normal View History

//#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;
//}