写了个完整版的:
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,
运算结果:
第一次玩这个,明人不说暗话,我想要你的豆。
百度一下,很多类似的思维,可以借鉴一下就写出来了
C#如何遍历二维数组 如何获取数组的维度数:https://jingyan.baidu.com/article/f79b7cb32811ff9144023e2a.html
找出二维数组里某一个元素周围的最大值(或最小值):https://bbs.csdn.net/topics/390778008
找出一个二维数组的最大值和最小值,输出该值并输出它的下标:https://zhidao.baidu.com/question/127316562.html
我只会循环,判断左上、右上、左下、右下、上、右、下、左是否小于它
求大佬帮忙
– 薛小谦 3年前