[英]How do I find the row and column that has the highest value?
如何使用 C# 程序找到具有最高值的行和列? 该程序要求用户输入程序中有多少行和列,然后询问数字。 假设我为矩阵输入了 4 列和 3 行,然后输入了这些数字:
89 11 22 44
29 51 80 20
33 10 45 10
在这种情况下,我需要的 output 是“第一个最大值位于第 1 行和第 1 列”。 如何让程序找到最高值所在的位置,直到程序打印最高值所在的行和列。当我尝试调用该方法来获取返回值时,它不会打印它。 这是我尝试的代码:
using System;
namespace locateLargest
{
class Program
{
static void Main(string[] args)
{
int[,] arrayPart1 = new int[3, 4];
for (int row = 0; row < arrayPart1.GetLength(0); row++)
{
for (int column = 0; column < arrayPart1.GetLength(1); column++)
{
arrayPart1[row, column] = Convert.ToInt32(Console.ReadLine());
}
}
for (int row = 0; row < arrayPart1.GetLength(0); row++)
{
for (int column = 0; column < arrayPart1.GetLength(1); column++)
{
Console.Write("Value at [" + row + ", " + column + "]: " + arrayPart1[row, column] + "\t");
}
Console.WriteLine();
Console.WriteLine("The highest value in the array is at "+largest)
}
}
public static int[] LocateLargest(int[,] someArray)
{
{
int largest = someArray[0, 0];
int row, column;
int maxRow = 0;
int maxCol = 0;
for (row = 0; row < someArray.GetLength(0); row++)
{
for (column = 0; column < someArray.GetLength(1); column++)
{
if (someArray[row, column] > largest)
{
maxRow = row;
maxCol = column;
largest = someArray[row, column];
}
}
}
return largest;
}
}
}
}
我认为这是 go 初学者最简单的方法。
static void Main(string[] args)
{
int[,] arrayPart1 = new int[3, 4];
for (int row = 0; row < arrayPart1.GetLength(0); row++)
{
for (int column = 0; column < arrayPart1.GetLength(1); column++)
{
arrayPart1[row, column] = Convert.ToInt32(Console.ReadLine());
}
}
for (int row = 0; row < arrayPart1.GetLength(0); row++)
{
for (int column = 0; column < arrayPart1.GetLength(1); column++)
{
Console.Write("Value at [" + row + ", " + column + "]: " + arrayPart1[row, column] + "\t");
}
Console.WriteLine();
Console.WriteLine("The highest value in the array is at "+ LocateLargest (arrayPart1)).ToString ())
}
}
int LocateLargest(int[,] someArray)
{
int largest = someArray[0, 0];
int row, column;
int maxRow = 0;
int maxCol = 0;
for (row = 0; row < someArray.GetLength(0); row++)
{
for (column = 0; column < someArray.GetLength(1); column++)
{
if (someArray[row, column] > largest)
{
maxRow = row;
maxCol = column;
largest = someArray[row, column];
}
}
Console.WriteLine("The largest value is at row " + maxRow.ToString() + "and column " + maxCol.ToString());
return largest;
}
这对我有用:
var input = new []
{
"89 11 22 44",
"29 51 80 20",
"33 10 45 10",
};
var result =
input
.Select((line, row) => new
{
row,
columns =
line
.Split(' ')
.Select((number, column) => new
{
column,
value = int.Parse(number)
})
})
.SelectMany(x => x.columns, (x, y) => new { x.row, y.column, y. value })
.OrderByDescending(x => x.value)
.First();
Console.WriteLine($"The largest value is {result.value} at row {result.row + 1} and column {result.column + 1}");
它给:
第 1 行第 1 列的最大值为 89
int [,] a = new int [3,4]{
{89, 11, 22, 44},
{29, 51, 80, 20},
{33, 10, 45, 10}
}
int =0
int maxj=0
int =0
for (i=0; i<a[0].length; i++){
for (j=0; j<a.length; j++){
if (>maxValue){
maxValue=a[i][j]
maxi=i
maxj=j
}
}
}
maxi 和 maxj 将为您提供 a[i][j] 的 position
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.