首页 新闻 会员 周边

C#定义一个二维数组,从控制台输入二维数组的值,找出值大于周围值得点的下标

0
悬赏园豆:20 [已解决问题] 解决于 2021-04-14 16:34

C#定义一个二维数组,从控制台输入二维数组的值,找出值大于周围值得点的下标

C#
薛小谦的主页 薛小谦 | 初学一级 | 园豆:195
提问于:2021-04-13 10:52

求大佬帮忙

薛小谦 3年前
< >
分享
最佳答案
1

写了个完整版的:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Linq;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入二维数组行数:");
            int len0 = int.Parse(Console.ReadLine());
            Console.WriteLine("输入二维数组列数:");
            int len1 = int.Parse(Console.ReadLine());

            Console.WriteLine("依次输入二维数组的值:");
            int[,] arr = new int[len0, len1];
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    arr[i,j]= int.Parse(Console.ReadLine());
                }
            }
            Console.WriteLine("二维数组输入完成...");
            List<ArrayIndex> list = GetIndex(arr);
            if (list.Count > 0)
            {
                Console.WriteLine("符合条件的下标如下(行,列):");
                foreach (var item in list)
                {
                    Console.WriteLine(item.Row+","+item.Col);
                }
            }
            else 
            {
                Console.WriteLine("未找到符合条件的下标");
            }
            
            Console.ReadLine();
        }

        static List<ArrayIndex> GetIndex(int[,]arr) 
        {
            List<ArrayIndex>  result = new List<ArrayIndex>();
            List<int> list = new List<int>();
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    list.Clear();
                    if ((i - 1) >= 0) list.Add(arr[i - 1, j]);
                    if ((i + 1) < arr.GetLength(0)) list.Add(arr[i + 1, j]);
                    if ((j - 1) >= 0) list.Add(arr[i, j-1]);
                    if ((j+ 1) < arr.GetLength(1)) list.Add(arr[i, j + 1]);
                    if (arr[i, j] > list.Max()) result.Add(new ArrayIndex() {Row=i,Col=j });
                }
            }
            return result;
        }

        class ArrayIndex 
        {
            public int Row { get; set; }
            public int Col { get; set; }
        }
    }    
}

输入数组:
1,2,3,4,5,
6,11,22,33,44,
55,89,0,1,3
3,5,6,8,9,
运算结果:

第一次玩这个,明人不说暗话,我想要你的豆。

收获园豆:20
二次元攻城狮 | 菜鸟二级 |园豆:462 | 2021-04-13 20:54
其他回答(2)
0

百度一下,很多类似的思维,可以借鉴一下就写出来了

C#如何遍历二维数组 如何获取数组的维度数:https://jingyan.baidu.com/article/f79b7cb32811ff9144023e2a.html

找出二维数组里某一个元素周围的最大值(或最小值):https://bbs.csdn.net/topics/390778008

找出一个二维数组的最大值和最小值,输出该值并输出它的下标:https://zhidao.baidu.com/question/127316562.html

熊泽-学习中的苦与乐 | 园豆:2267 (老鸟四级) | 2021-04-13 13:23
0

我只会循环,判断左上、右上、左下、右下、上、右、下、左是否小于它

echo_lovely | 园豆:1437 (小虾三级) | 2021-04-13 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册