繁体   English   中英

如何找到具有最高值的行和列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM