Cod sursa(job #2910183)

Utilizator radu.seitanSeitan Radu-Catalin radu.seitan Data 18 iunie 2022 17:13:54
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include<iostream>
using namespace std;

int ssmr(int A[], int DP[], int result, int N, int pos) {
	if(pos >= N) {
		return result;
	}
	else {
		DP[pos + 1] = max(A[pos], A[pos] + DP[pos]);
		return ssmr(A, DP, max(result, DP[pos + 1]), N, pos + 1);
	}
}

int ssm(int A[], int N) {
	int DP[N];
	int result;
	DP[0] = 0;

	for(int i = 0; i < N; i++) {
		DP[i + 1] = max(A[i], A[i] + DP[i]);
		result = max(DP[i], DP[i + 1]);
	}

	return result;
}

int main(void) {
	int A[] = {5, -6, 3, 4, -2, 3, -3};
	int DP[sizeof(A)/sizeof(A[0])] = {};
	cout<<ssmr(A, DP, 0, sizeof(A)/sizeof(A[0]) - 1, 0)<<endl<<endl;
	cout<<ssm(A, sizeof(A)/sizeof(A[0]) - 1);


	return 0;
}