Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取所有项总和最大的子数组_C# - Fatal编程技术网

C# 如何获取所有项总和最大的子数组

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] 请帮助我给出解决方法。基本上,您需要做的是遍历数组并检查元素和的最大值。一旦找到最大和,就得到了结

我的测试是为了解决以下问题: 给出了一个由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]


请帮助我给出解决方法。

基本上,您需要做的是遍历数组并检查元素和的最大值。一旦找到最大和,就得到了结果子数组的最后一个元素。 一旦找到了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是子数组的一部分?谢谢。它在我的嵌套循环中运行得更快。