mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #1541 from cezarbbb/Backtracking09
添加 0051.N皇后 Rust版本
This commit is contained in:
@ -558,6 +558,56 @@ func solveNQueens(_ n: Int) -> [[String]] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
fn is_valid(row: usize, col: usize, chessboard: &mut Vec<Vec<char>>, n: usize) -> bool {
|
||||||
|
let mut i = 0 as usize;
|
||||||
|
while i < row {
|
||||||
|
if chessboard[i][col] == 'Q' { return false; }
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
let (mut i, mut j) = (row as i32 - 1, col as i32 - 1);
|
||||||
|
while i >= 0 && j >= 0 {
|
||||||
|
if chessboard[i as usize][j as usize] == 'Q' { return false; }
|
||||||
|
i -= 1;
|
||||||
|
j -= 1;
|
||||||
|
}
|
||||||
|
let (mut i, mut j) = (row as i32 - 1, col as i32 + 1);
|
||||||
|
while i >= 0 && j < n as i32 {
|
||||||
|
if chessboard[i as usize][j as usize] == 'Q' { return false; }
|
||||||
|
i -= 1;
|
||||||
|
j += 1;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
fn backtracking(result: &mut Vec<Vec<String>>, n: usize, row: usize, chessboard: &mut Vec<Vec<char>>) {
|
||||||
|
if row == n {
|
||||||
|
let mut chessboard_clone: Vec<String> = Vec::new();
|
||||||
|
for i in chessboard {
|
||||||
|
chessboard_clone.push(i.iter().collect::<String>());
|
||||||
|
}
|
||||||
|
result.push(chessboard_clone);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for col in 0..n {
|
||||||
|
if Self::is_valid(row, col, chessboard, n) {
|
||||||
|
chessboard[row][col] = 'Q';
|
||||||
|
Self::backtracking(result, n, row + 1, chessboard);
|
||||||
|
chessboard[row][col] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn solve_n_queens(n: i32) -> Vec<Vec<String>> {
|
||||||
|
let mut result: Vec<Vec<String>> = Vec::new();
|
||||||
|
let mut chessboard: Vec<Vec<char>> = vec![vec!['.'; n as usize]; n as usize];
|
||||||
|
Self::backtracking(&mut result, n as usize, 0, &mut chessboard);
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### C
|
### C
|
||||||
```c
|
```c
|
||||||
char ***ans;
|
char ***ans;
|
||||||
|
Reference in New Issue
Block a user