用c#写一段完整代码找到一个具有鞍点的二维数组(3行4列,值的范围在0~100之间)。 如果某元素是其所在行的最大值,同时是其所在列的最小值,那么该元素是二维数组的鞍点。并非所有的数组都存在鞍点。
时间: 2024-09-07 19:03:58 浏览: 33
在 C# 中,你可以使用嵌套循环遍历二维数组,并检查每个元素是否满足鞍点的条件。以下是一个完整的示例代码:
```csharp
using System;
class Program
{
static void Main(string[] args)
{
int[,] matrix = new int[,]
{
{ 50, 60, 70, 80 },
{ 90, 10, 15, 25 },
{ 30, 40, 55, 65 }
};
bool hasHypotenuse = FindHypotenusePoint(matrix);
if (hasHypotenuse)
{
Console.WriteLine("Array contains a hypotenuse point:");
PrintMatrix(matrix);
}
else
{
Console.WriteLine("Array does not contain a hypotenuse point.");
}
Console.ReadLine();
}
// 检查矩阵是否存在鞍点
static bool FindHypotenusePoint(int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (matrix[i, j] == GetMaxInRow(matrix, i) && matrix[i, j] == GetMinInCol(matrix, j))
{
return true;
}
}
}
return false;
}
// 获取给定行的最大值
static int GetMaxInRow(int[,] matrix, int row)
{
int max = matrix[row, 0];
for (int col = 1; col < matrix.GetLength(1); col++)
{
if (matrix[row, col] > max)
{
max = matrix[row, col];
}
}
return max;
}
// 获取给定列的最小值
static int GetMinInCol(int[,] matrix, int col)
{
int min = matrix[0, col];
for (int row = 1; row < matrix.GetLength(0); row++)
{
if (matrix[row, col] < min)
{
min = matrix[row, col];
}
}
return min;
}
// 打印矩阵
static void PrintMatrix(int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}
}
}
阅读全文