C#定义一个二维数组,从控制台输入二维数组的值,找出值大于周围值得点的下标
C#定义一个二维数组,从控制台输入二维数组的值,找出值大于周围值得点的下标
回答
写了个完整版的:
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,
运算结果:
第一次玩这个,明人不说暗话,我想要你的豆。
THE END
二维码