0037.解数独:优化排版,补充Swift版本

This commit is contained in:
bqlin
2021-12-18 13:55:22 +08:00
parent 879886acb3
commit eb721afa35

View File

@@ -61,7 +61,7 @@
代码如下:
```
```cpp
bool backtracking(vector<vector<char>>& board)
```
@@ -504,5 +504,54 @@ void solveSudoku(char** board, int boardSize, int* boardColSize) {
}
```
### Swift
```swift
func solveSudoku(_ board: inout [[Character]]) {
//
func isValid(row: Int, col: Int, val: Character) -> 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 }
}
// 9
let startRow = row / 3 * 3
let startCol = col / 3 * 3
for i in startRow ..< startRow + 3 {
for j in startCol ..< startCol + 3 {
if board[i][j] == val { return false }
}
}
return true
}
@discardableResult
func backtracking() -> Bool {
for i in 0 ..< board.count { // i
for j in 0 ..< board[0].count { // j
guard board[i][j] == "." else { continue } //
//
for val in 1 ... 9 {
let charVal = Character("\(val)")
guard isValid(row: i, col: j, val: charVal) else { continue } //
board[i][j] = charVal //
if backtracking() { return true }
board[i][j] = "." //
}
return false //
}
}
return true //
}
backtracking()
}
```
-----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>