用C#写代码:找到一个具有鞍点的二维数组(3行4列,值的范围在0~100之间)。如果某元素是其所在行的最大值,同时是其所在列的最小值,那么该元素是二维数组的鞍点。并非所有的数组都存在鞍点。
时间: 2024-09-07 14:04:05 浏览: 41
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
在C#中,你可以编写一个方法来查找一个具有鞍点的二维数组。以下是一个可能的实现:
```csharp
using System;
class Program
{
static void Main()
{
int[,] array = {
{10, 20, 30, 40},
{50, 60, 70, 80},
{90, 100, 110, 120}
};
if (HasSaddlePoint(array))
{
Console.WriteLine("存在鞍点");
}
else
{
Console.WriteLine("不存在鞍点");
}
}
static bool HasSaddlePoint(int[,] array)
{
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < rows; i++)
{
int rowMax = array[i, 0];
int colIndex = 0;
// 找到当前行的最大值
for (int j = 1; j < cols; j++)
{
if (array[i, j] > rowMax)
{
rowMax = array[i, j];
colIndex = j;
}
}
// 检查这个最大值是否是所在列的最小值
bool isSaddlePoint = true;
for (int k = 0; k < rows; k++)
{
if (array[k, colIndex] < rowMax)
{
isSaddlePoint = false;
break;
}
}
// 如果是鞍点,则返回true
if (isSaddlePoint)
{
Console.WriteLine($"鞍点为:{array[i, colIndex]}");
return true;
}
}
// 如果没有找到鞍点,则返回false
return false;
}
}
```
这段代码首先定义了一个二维数组`array`,然后调用`HasSaddlePoint`方法来检查是否存在鞍点。`HasSaddlePoint`方法遍历每一行,找到该行的最大值,然后检查这个最大值是否是它所在列的最小值。如果是,则说明找到了鞍点,并打印出来。如果遍历完所有行都没有找到鞍点,则方法返回`false`。
阅读全文