Pagini recente » Cod sursa (job #2899937) | Cod sursa (job #1226097) | Cod sursa (job #3217994) | Cod sursa (job #1268221) | Cod sursa (job #2908913)
/*
Maximum Subsequence Sum Problem
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
int max(int a, int b)
{
return a>b?a:b;
}
void maxSubSum(int* arr, int* dp, int n)
{
int i,maxSum,maxSum_index=0,temp;
FILE* g;
g = fopen("ssm.out", "wt");
dp[0]=max(0,arr[0]);
maxSum=dp[0];
for(i=1;i<n;i++)
{
dp[i]=max(0,arr[i]+dp[i-1]);
if (maxSum<dp[i])
{
maxSum = dp[i];
maxSum_index = i;
}
}
temp = maxSum_index;
while (dp[temp] > 0)
{
temp--;
}
fprintf(g,"%d %d %d", maxSum,temp+2,maxSum_index+1);
}
int main()
{
int n,i;
int *arr,*dp;
FILE* f;
f = fopen("read.txt", "rt");
fscanf(f,"%d",&n);
arr = (int*) calloc(n,sizeof(int));
for (i = 0; i < n; i++)
{
fscanf(f,"%d", arr + i);
}
dp = (int*) calloc(n,sizeof(int));
maxSubSum(arr, dp, n);
return 0;
}