如何在多维数组中找到值



我想知道如何找到一个由用户输入的数字,以便该数字将被打印。阅读的思路是从左到右,从上到下,从下到上。下面是我到目前为止的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace opgave1
{
    class Program
    {
        static void Main(string[] args)
        {

            int R = 8;
            int K = 10;
            int[,] matrix = new int[R, K];
            PrintMatrix(matrix, R, K);

            Console.Write("give a number: ");
            int nummer = int.Parse(Console.ReadLine());
//TODO TDO TODOOD 

            Console.ReadKey();

        }

        private static void PrintMatrix(int[,] matrix, int R, int K)
        {
            Random random = new Random();
            for (int h = 0; h < R; h++)
            {
                for (int k = 0; k < K; k++)
                {
                    matrix[h, k] = random.Next(1, 101);
                    Console.Write("{0,3}", matrix[h, k]);
                }
                Console.WriteLine();

            }
        }

    }
}

在主程序中将Console.ReadKey()替换为:

int num = Convert.ToInt32(Console.ReadLine());

解决它的一种方法是通过暴力破解。在嵌套循环中遍历整个矩阵,逐个找到元素。在c#中,您不需要传递数组的长度和宽度,因此跳过R和K,您在PrintMatrix()函数中使用并从输入矩阵本身计算它。

        private static void Print(int[,] matrix, int num)
    {
        Random random = new Random();
        int R = matrix.GetLength(0);
        int K = matrix.GetLength(1);
        for (int h = 0; h < R; h++)
        {
            for (int k = 0; k < K; k++)
            {
                if(matrix[h, k] == num)
                     Console.Write("{0,1}", h,k);
            }
            Console.WriteLine();

        }
    }

另一种方法是使用hashmap,您可以对创建的矩阵进行预处理,并将矩阵元素保存为键,将索引保存为值。

相关内容

  • 没有找到相关文章

最新更新