整数数组的最大和,如果我们考虑元素 a[i],那么我们不应该考虑 a[i]-1 和 a[i]+1。例如,如果数组 a = [1,1,1,1,1,2,2],则 o/p = 5,如果 a = [3,3,3,4,4,8,1],则 o/p =18。我应该使用什么方法。
我尝试过 dp 但不起作用
为了解决这个问题,我们只查看其他每个数字,因为我们不需要相邻的项目。我们可以通过对数组的奇数索引求和,对数组的偶数索引求和,然后比较哪个索引和更高来做到这一点。请参阅以下代码片段,了解如何在 C# 中完成此操作:
int[] a = {1,1,1,1,1,2,2};
int oddMax = 0;
int evenMax = 0;
for(int i = 0; i < a.Length; i++)
{
if(i % 2 == 0 || i == 0)
evenMax += a[i];
else
oddMax += a[i];
}
Console.WriteLine(oddMax);
Console.WriteLine(evenMax);
这将告诉您数组中非相邻数字的最大总和。如果这对您的问题有帮助,请投票:)