go语言写给定一个n*m矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第 i 行上的最大数,第 j 列上的最小数。一个矩阵A也可能没有鞍点
时间: 2024-03-18 09:41:59 浏览: 56
好的,这是一个比较基础的问题,我可以给您提供一份 Go 语言的代码来寻找矩阵的鞍点。以下是代码:
```go
package main
import (
"fmt"
)
func findSaddlePoint(matrix [][]int) (int, int) {
// 检查输入矩阵是否为空
if len(matrix) == 0 {
return -1, -1
}
// 获取矩阵的行数和列数
rows, cols := len(matrix), len(matrix[0])
// 遍历矩阵
for i := 0; i < rows; i++ {
for j := 0; j < cols; j++ {
// 判断该位置是否为第 i 行上的最大数,第 j 列上的最小数
isRowMax := true
isColMin := true
for k := 0; k < cols; k++ {
if matrix[i][k] > matrix[i][j] {
isRowMax = false
break
}
}
for k := 0; k < rows; k++ {
if matrix[k][j] < matrix[i][j] {
isColMin = false
break
}
}
// 如果是鞍点,则返回位置
if isRowMax && isColMin {
return i, j
}
}
}
// 如果没有鞍点,则返回-1
return -1, -1
}
func main() {
// 示例矩阵
matrix := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
row, col := findSaddlePoint(matrix)
if row == -1 && col == -1 {
fmt.Println("该矩阵没有鞍点")
} else {
fmt.Printf("鞍点位置为(%d, %d),值为%d\n", row, col, matrix[row][col])
}
}
```
代码中的 `findSaddlePoint` 函数用于寻找矩阵的鞍点,返回值是鞍点的行列位置。如果矩阵没有鞍点,则返回 (-1, -1)。在 `main` 函数中,我们给出一个示例矩阵,并输出鞍点的位置和值。
阅读全文