C++ 我如何处理这种变化?

C++ 我如何处理这种变化?,c++,arrays,algorithm,c++11,C++,Arrays,Algorithm,C++11,在数组中求最大和,使两个元素不相邻。在这种情况下,还有一个条件是,第一个元素和最后一个元素也不应该放在一起 如果没有最后一个条件,也就是说,我开发了下面的代码,其中我取了两个变量,incl和excl,并找出值。详情如下: #include <iostream> using namespace std; int main (void) { int i,n; cin>>n; int arr[100]; for ( i = 0; i <

在数组中求最大和,使两个元素不相邻。在这种情况下,还有一个条件是,第一个元素和最后一个元素也不应该放在一起

如果没有最后一个条件,也就是说,我开发了下面的代码,其中我取了两个变量,
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;
}
#包括
使用名称空间std;
内部主(空)
{
inti,n;
cin>>n;
int-arr[100];
对于(i=0;i>arr[i];
国际,包括,不包括,不包括;
incl=arr[0];
对于(i=1;i不包括)
excls=包括;
其他的
excls=excl;
incl=不包括+arr[i];
excl=EXCS;
}
如果(包括>不包括)

cout为了说明这种特殊情况,可以运行现有算法两次

第一次计算数组中前n-1个元素的最佳和。这将计算绝对不包括最后一个元素的最佳和

第二次计算数组中最后n-1个元素的最佳和。这将计算绝对不包括第一个元素的最佳和

最好的答案将是这两个结果中最好的一个


(顺便说一下,您没有初始化变量excl,因此有时可能会得到错误的结果)

如何区分连续的元素?