所以我在算法上做了这个问题,我必须找到一个数组中非连续元素的最大和,并采用DP方法。虽然总和很容易获得,但我无法弄清楚如何获得各个子解决方案(或构成最大总和的数字)。
我尝试检查要插入的元素是否是相邻元素。
int MaxSum(int arr[], int n) {
int a[n/2];
int inc = arr[0];
int exc = 0;
int exc_n;
int i, pos = -1, j = 0;
for (i = 1; i < n; i++)
{
if (inc > exc)
{
exc_n = inc;
if (pos + 1 != i){
a[j] = arr[i];
j++;
pos = i;
}
else
{
exc_n = exc;
}
inc = exc + arr[i];
exc = exc_n;
}
return ((inc > exc) ? inc : exc);
}
我需要返回构成满足“非相邻”条件的最大和的元素。我在做什么错了,我该怎么办?