PAT 1007 Somme maximale des sous-séquences (25 分)

Lien thématique: cliquez ici

Signification: donné un KKPour une séquence de K entiers, la plus grande sous-séquence fait référence à la plus grande somme de tous les éléments de la sous-séquence continue. Par exemple, étant donné la séquence{- 2, 11, - 4, 13, - 5, - 2} \ left \ {- 2, 11, -4, 13, -5, -2 \ right \}{ - 2 ,1 1 ,- 4 ,1 3 ,- 5 ,- 2 } , la plus grande sous-séquence est{11, - 4, 13} \ left \ {11, -4, 13 \ right \}{ 1 1 ,- 4 ,1 3 } , la somme maximale est20 202 0 . Vous devez maintenant trouver la plus grande somme et les premier et dernier nombres de la plus grande sous-séquence.

Idées:

Une explication détaillée de la somme maximale des sous-séquences: cliquez ici

Sur la base du code ci-dessus, comment trouver les premier et dernier nombres de la plus grande sous-séquence?

Puisque les sous-séquences que nous recherchons sont toutes disjointes, donc dans la variable sss clair0 0Lorsque 0 , enregistrez le premier nombre du plus granddébut de sous-séquences t a r t ; lors de la mise à jour de la réponse, enregistrez le dernier numéro de la plus grande sous-séquencerrr , mettre à jourllen même tempsl

Code AC:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 10010;

int a[N];

int main()
{
    
    
    int n, x;
    scanf("%d", &n);
    for(int i = 0; i < n; i++)  scanf("%d", &a[i]);
    
    int ans = -1e9, s = 0;
    int start = 0, l, r;
    for(int i = 0; i < n; i++)
    {
    
    
        if(s < 0)
        {
    
    
            s = 0;
            start = i;
        }
        s += a[i];
        if(s > ans)
        {
    
    
            ans = s;
            l = start, r = i;
        }
    }
    
    if(ans < 0) ans = 0, l = 0, r = n - 1;
    
    printf("%d %d %d", ans, a[l], a[r]);
    
    return 0;
}

Le compte public WeChat «Algorithm Competition Job Search» est dédié à l'explication détaillée des principes et des modèles d'algorithme impliqués dans le concours et la recherche d'emploi. Bienvenue pour faire attention et communiquer et progresser ensemble!

Je suppose que tu aimes

Origine blog.csdn.net/qq_42815188/article/details/108983521
conseillé
Classement