Structure des données les plus grandes sous-colonnes et problèmes

É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;
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_45728434/article/details/108904707
conseillé
Classement