Étant donné une séquence constituée de K entiers {N 1, N2,…, N K}, la "sous-colonne continue" est définie comme {Ni, Ni + 1,…, Nj}, où 1≤i≤ j≤K. La «somme maximale de sous-colonnes» est définie comme la plus grande de la somme de tous les éléments de sous-colonnes consécutifs. Par exemple, étant donné la séquence {-2, 11, -4, 13, -5, -2}, ses sous-colonnes consécutives {11, -4, 13} ont la plus grande somme 20. Vous devez maintenant écrire un programme pour calculer la somme maximale des sous-colonnes d'une séquence donnée d'entiers.
Cette question vise à tester les performances de divers algorithmes dans diverses situations de données. Les caractéristiques de chaque groupe de données d'essai sont les suivantes:
Données 1: équivalent à l'échantillon, le test est fondamentalement correct;
Données 2: 102 entiers aléatoires;
Données 3: 103 entiers aléatoires;
Données 4: 104 entiers aléatoires;
Données 5: 105 entiers aléatoires;
Format d'
entrée : entrée La première ligne donne un entier positif K (≤100000); la deuxième ligne donne K entiers séparés par des espaces.
Format de
sortie : affiche la plus grande somme de sous-colonnes d'une ligne. Si tous les nombres entiers de la séquence sont négatifs, 0 est affiché.
Exemple d' entrée:
6
-2 -4 11 13 -5 -2
échantillon de sortie:
20
#include<stdio.h>
int main()
{
int n,i,a[100000]={
0},sum=0,max=0;
scanf("%d",&n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i < n;i++)
{
sum += a[i];
if(sum > max)
{
max = sum;
}
else if(sum < 0)
{
sum = 0;
}
}
printf("%d",max);
return 0;
}