Najlepszą sumą ciągu liczb a1, a2, …, an nazywamy największą wartość wśród sum złożonych
z sąsiednich elementów tego ciągu. Na przykład dla ciągu: 1, 2, -5, 7 mamy następujące sumy:
1
1+2 = 3
1+2+(-5) = -2
1+2+(-5)+7 = 5
2
2+(-5) = -3
2+(-5)+7 = 4
-5
-5+7 = 2
7
Zatem najlepszą sumą jest 7 (zwróć uwagę, że jeden element też uznajemy za sumę).
Zaproponuj algorytm wyznaczania najlepszej sumy dla dowolnego ciągu liczb całkowitych. Na jego
podstawie napisz program do obliczenia najlepszych sum ciągów liczb.
Wejście
W jednej linii znajduje się ciąg liczb całkowitych zakończony liczbą 0. Liczb jest nie więcej niż 500000,
ich wartość mieści się w przedziale [-1000, 1000].
Wyjście
Największa suma złożona z kolejnych elementów ciągu.
Przykład
Dla danych wejściowych: poprawną odpowiedzią jest:
1 2 -5 7 7
............................................................................................................................................................................................
Czy mógłby mi ktoś pomóc i powiedzieć, czemu mój program nie działa? Wyniki wychodzą niby dobre. Jestem początkująca, więc będą to z pewnością głupie błędy, i nie jestem pewna czy się gdzieś nie pogubiłam.
#include <iostream>
using namespace std;
int n,k, t[10000], suma=0, maxi, suma1, maxx;
int main ()
{
cin>>n;
for(int i=0; i<n; i++)
{
cin>>k;
maxi=k;
suma=suma+k;
t[i]=suma;
if(suma>maxi)
maxi=suma;
else
maxi=maxi;
}
for(int i=0; i<n; i++)
{
suma1=t[n-1]-t[i];
maxx=t[n-1];
if(suma1>maxx)
maxx=suma1;
else
maxx=maxx;
}
if(maxx>maxi)
maxi=maxx;
cout<<maxi;
return 0;
}
k
in
. Oraz czym się różnimaxi
odmaxx
isuma
odsuma1