C# 数组拆分成子数组再根据指定条件组装成新数组
比如:double[] X = {880, 479, 584, 487, 718, 872,1052, 476, 717, 578}; //数组X
double[] Y = {579, 1092, 926, 1110, 749, 568, 465, 1088, 734, 909}; //数组Y
double[] Score = {0.588, 0.623, 0.654, 0.824, 0.68, 0.707,0.745, 0.671, 0.863, 0.923}; //数组Score
三个数组的元素值根据索引是 一 一 对应的,首先提取X、Y数组中元素差值同时满足在指定范围内(比如差值<=30)的元素并放在多个子数组中,同时数组Score中的元素也跟着
放在多个子数组中,如下形式:
数组X的子数组: {880, 872}
{479, 487, 476}
{584, 578}
{718, 717}
{1052}
数组Y的子数组:{579, 568}
{1092, 1110, 1088 }
{926, 909}
{749, 734}
{465}
数组Score 的子数组:{0.588, 0.707}
{0.623, 0.824, 0.671}
{0.654, 0.923}
{0.68, 0.863}
{0.745}
完成后,再根据每个Score子数组中的最大元素值对应的索引输出X、Y子数组中的元素,将这些元素在放在一个数组中
最终输出:
数组X的子数组满足条件的数组: {872, 487, 578, 717, 1052}
数组Y的子数组满足条件的数组: {568, 1110, 909, 734, 465}
C# 数组拆分成子数组再根据指定条件组装成新数组
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- GISer Liu 2024-03-06 16:31关注
该回答引用自GPT-3.5,由博主GISer Liu编写:
根据您的问题描述,您需要编写一个C#程序,该程序能够将给定的三个数组拆分成满足指定条件的子数组,并根据子数组中的最大元素值的索引输出对应的元素。下面是解决这个问题的思路和解决方案:
解决思路:
- 首先,我们需要编写一个函数,该函数能够将给定的两个数组按照指定条件拆分成子数组。在这个问题中,我们需要根据X和Y数组中元素的差值是否小于等于30来拆分子数组。
- 接着,我们需要编写另一个函数,该函数接收拆分后的子数组以及对应的Score数组,然后根据每个Score子数组中的最大元素值的索引输出对应的X和Y子数组中的元素。
- 最后,我们将这些元素放入一个新的数组中,并输出该数组作为最终结果。
解决方案:
csharpCopy code
这个解决方案首先拆分了X和Y数组,然后根据每个子数组中Score数组的最大元素值的索引,输出了满足条件的X和Y子数组中的元素。最终结果保存在finalX和finalY中,并输出到控制台上。using System; using System.Collections.Generic; class Program { static void Main(string[] args) { double[] X = { 880, 479, 584, 487, 718, 872, 1052, 476, 717, 578 }; double[] Y = { 579, 1092, 926, 1110, 749, 568, 465, 1088, 734, 909 }; double[] Score = { 0.588, 0.623, 0.654, 0.824, 0.68, 0.707, 0.745, 0.671, 0.863, 0.923 }; List<double[]> resultX = SplitArray(X, Y, Score); List<double[]> resultY = SplitArray(Y, X, Score); List<double> finalX = new List<double>(); List<double> finalY = new List<double>(); foreach (var subArray in resultX) { int maxIndex = GetMaxIndex(subArray, Score); finalX.Add(subArray[maxIndex]); finalY.Add(resultY[resultX.IndexOf(subArray)][maxIndex]); } Console.WriteLine("数组X的子数组满足条件的数组:"); Console.WriteLine(string.Join(", ", finalX)); Console.WriteLine("数组Y的子数组满足条件的数组:"); Console.WriteLine(string.Join(", ", finalY)); } static List<double[]> SplitArray(double[] array1, double[] array2, double[] scores) { List<double[]> result = new List<double[]>(); List<double> temp = new List<double>(); double threshold = 30; for (int i = 0; i < array1.Length; i++) { double diff = Math.Abs(array1[i] - array2[i]); if (diff <= threshold) { temp.Add(array1[i]); } else { if (temp.Count > 0) { result.Add(temp.ToArray()); temp.Clear(); } } } if (temp.Count > 0) { result.Add(temp.ToArray()); } return result; } static int GetMaxIndex(double[] array, double[] scores) { double max = double.MinValue; int maxIndex = -1; for (int i = 0; i < array.Length; i++) { if (scores[i] > max) { max = scores[i]; maxIndex = i; } } return maxIndex; } }
如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订
解决 无用评论 打赏 举报
悬赏问题
- ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
- ¥15 找一个QT页面+目标识别(行人检测)的开源项目
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析
- ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
- ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
- ¥15 LLM accuracy检测
- ¥15 pycharm添加远程解释器报错