Это популярная проблема с DP. Я должен найти максимальную сумму в массиве, который состоит только из несмежных элементов. Я видел другие посты, но я хочу сделать это с помощью динамического программирования, в частности, восходящего DP. Вот мой код:
int maxSubsetSum(vector<int> arr,int start,int end) {
int sum[arr.size()]; //to store max sum upto a given index
sum[0] = arr[start];
sum[1] = max(arr[start], arr[end]);
if(start==end){
return sum[0];
}
else if(start==end-1){
return sum[1];
}
else{
for(int i=2;i<=end;i++){
sum[i]=max(arr[i],max(arr[i]+sum[i-2],sum[i-1]));
}
}
return sum[end];
}
У меня возникают ошибки при прохождении тестовых случаев. Хотя, когда я запускал один тестовый пример вручную, он работал правильно. Фактический результат был таким же, как то, что я получил. Но система тестирования дала другой результат моему коду.
Я тестировал этот код вручную на контрольном примере: 3 5 -7 8 10
и ответ соответствовал фактическому результату (= 15), но контрольный пример не прошел.
sum[0]=3
sum[1]=5
sum[2]=max(-7,max(-7+3,5))=5
sum[3]=max(8,max(8+5,5))=13
sum[4]=max(10,max(10+5,13))=15
Пожалуйста, укажите мне правильное направление, где я делаю неправильно.