查找数组中的最大总和,使得没有2个元素相邻。在这方面,还有另外一个条件,即第一个和最后一个元素也不应该在一起。
如果它没有最后一个条件,那么我开发了以下代码,其中我采用两个变量incl
和excl
并找出值。它如下:
#include <iostream>
using namespace std;
int main (void)
{
int i,n;
cin>>n;
int arr[100];
for ( i = 0; i < n; i++ )
cin>>arr[i];
int incl,excl,excls;
incl = arr[0];
for ( i = 1; i < n; i++ )
{
if (incl > excl)
excls = incl;
else
excls = excl;
incl = excl + arr[i];
excl = excls;
}
if (incl > excl)
cout<<incl;
else
cout<<excl;
cout<<"\n";
return 0;
}
如何针对特殊情况修改此内容?谢谢!
答案 0 :(得分:0)
考虑到特殊情况,您可以运行两次现有算法。
第一次计算数组中第一个n-1个元素的最佳总和。这将计算绝对不包括最后一个元素的最佳总和。
第二次计算数组中最后n-1个元素的最佳总和。这将计算绝对不包括第一个元素的最佳总和。
最好的答案将是这两个结果中最好的。
(顺便说一下,你没有初始化变量excl,所以你有时可能得到不正确的结果)