Merge pull request #1542 from cezarbbb/Backtracking10

添加 0037.解数独 Rust版本
This commit is contained in:
程序员Carl
2022-08-09 09:24:41 +08:00
committed by GitHub

View File

@ -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