mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
添加 0037.解数独 Rust版本
添加 0037.解数独 Rust版本
This commit is contained in:
@ -488,6 +488,52 @@ function solveSudoku(board: string[][]): void {
|
||||
};
|
||||
```
|
||||
|
||||
### Rust
|
||||
|
||||
```Rust
|
||||
impl Solution {
|
||||
fn is_valid(row: usize, col: usize, val: char, board: &mut Vec<Vec<char>>) -> bool{
|
||||
for i in 0..9 {
|
||||
if board[row][i] == val { return false; }
|
||||
}
|
||||
for j in 0..9 {
|
||||
if board[j][col] == val {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
let start_row = (row / 3) * 3;
|
||||
let start_col = (col / 3) * 3;
|
||||
for i in start_row..(start_row + 3) {
|
||||
for j in start_col..(start_col + 3) {
|
||||
if board[i][j] == val { return false; }
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
fn backtracking(board: &mut Vec<Vec<char>>) -> bool{
|
||||
for i in 0..board.len() {
|
||||
for j in 0..board[0].len() {
|
||||
if board[i][j] != '.' { continue; }
|
||||
for k in '1'..='9' {
|
||||
if Self::is_valid(i, j, k, board) {
|
||||
board[i][j] = k;
|
||||
if Self::backtracking(board) { return true; }
|
||||
board[i][j] = '.';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
pub fn solve_sudoku(board: &mut Vec<Vec<char>>) {
|
||||
Self::backtracking(board);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C
|
||||
|
||||
```C
|
||||
|
Reference in New Issue
Block a user