C# 如何获取所有项总和最大的子数组
我的测试是为了解决以下问题: 给出了一个由N个整数组成的零索引数组。 编写一个解决方案,找出一个数组的子数组,其中包含所有项的最大和的后续项 例如:C# 如何获取所有项总和最大的子数组,c#,C#,我的测试是为了解决以下问题: 给出了一个由N个整数组成的零索引数组。 编写一个解决方案,找出一个数组的子数组,其中包含所有项的最大和的后续项 例如: A=[2,-1,3,-3,4,-9,10,-3,4,-4,-7,2,8]。答案是[10,-3,4] A=[3,2,-5,7,4,-8,3,-5,2,4,-2,4]。答案是[7,4] A=[-2,5,3,6,-1,-5]。答案是[-2,5,3,6] 请帮助我给出解决方法。基本上,您需要做的是遍历数组并检查元素和的最大值。一旦找到最大和,就得到了结
。答案是A=[2,-1,3,-3,4,-9,10,-3,4,-4,-7,2,8]
[10,-3,4]
。答案是A=[3,2,-5,7,4,-8,3,-5,2,4,-2,4]
[7,4]
。答案是A=[-2,5,3,6,-1,-5]
[-2,5,3,6]
请帮助我给出解决方法。基本上,您需要做的是遍历数组并检查元素和的最大值。一旦找到最大和,就得到了结果子数组的最后一个元素。 一旦找到了max元素,就需要往回遍历并执行相同的操作,以便找到元素总和最大的子数组
int iNewTopHigh = 0;
int iNewTopLow = 0;
int iIndNewTopHigh = 0;
int iIndNewTopLow = 0;
int iSumHigh = 0;
int iSumLow = 0;
int[] iArr = {2, -1, 3, -3, 4, -9, 10, -3, 4, -4, -7, 2, 8};
//{3, 2, -5, 7, 4, -8, 3, -5, 2, 4, -2, 4};
//{-2, 5, 3, 6, -1,-5};
//Get the top
for(int i = 0; i < iArr.Length; i++){
iSumHigh += iArr[i];
if(iSumHigh > iNewTopHigh){
iIndNewTopHigh = i;
iNewTopHigh = iSumHigh;
}
}
//Get the bottom
for(int i = iIndNewTopHigh; i != 0; i--){
iSumLow += iArr[i];
if(iSumLow > iNewTopLow){
iIndNewTopLow = i;
iNewTopLow = iSumLow;
}
}
//Print results
for(int i = iIndNewTopLow ; i <= iIndNewTopHigh; i++){
Console.Write(iArr[i] + ", ");
}
int-iNewTopHigh=0;
int iNewTopLow=0;
int IINDNEWTOPHIH=0;
int iIndNewTopLow=0;
int iSumHigh=0;
int iSumLow=0;
int[]iArr={2,-1,3,-3,4,-9,10,-3,4,-4,-7,2,8};
//{3, 2, -5, 7, 4, -8, 3, -5, 2, 4, -2, 4};
//{-2, 5, 3, 6, -1,-5};
//登上顶峰
对于(inti=0;iiNewTopHigh){
iIndNewTopHigh=i;
iNewTopHigh=iSumHigh;
}
}
//摸底
对于(inti=iindnewtophih;i!=0;i--){
iSumLow+=iArr[i];
如果(iSumLow>InewtoFlow){
iIndNewTopLow=i;
iNewTopLow=iSumLow;
}
}
//打印结果
对于(int i=iIndNewTopLow;i你做了什么来解决它?发布家庭作业?如果我们只发布答案,你希望如何学习如何解决问题?这可以通过几十种方式解决。你尝试了什么?出了什么问题?你停在哪里了?我还没有找到解决问题的方法。请引导我找到解决问题的理想方法@user1186850你能用眼睛解决这个问题而不写代码吗?如果是,用英语写一系列伪代码步骤(忘记C#)。如果你能做到这一点,那么你的答案就达到了95%。提示:开始扫描顺序项并存储每个组合的总和。在上一个示例中,为什么-2是子数组的一部分?谢谢。它在我的嵌套循环中运行得更快。