Am nevoie de ajutor in legatura cu o problema:
Suma numere:
Andrei tocmai a invatat operatii cu numere intregi. Acum doreste sa exerseze adunarea. Astfel el scrie la intamplare un sir de numere intregi pe care le insumeaza. Analizand rezultatele sale a bservat ca insumand doar secvente de numere consecutive din sirul numerelor sale poate obtine sume mai mari sau mai mici. Andrei si-a propus sa determine valoarea celei mai mari sume.
Cerinta:
Sa se scrie un program care determina valoarea celei mai mari sume care se poate obtine adunand doar numere consecutive dintr-un sir de numere intregi.
Date de intrare:
Din fisierul numere.in se citesc de pe randuri diferite pana la un milion de numere intregi cu cel mult trei cifre de fiecare
Date de iesire:
In fisierul numere.out se scrie pe prima linie valoarea sumei cerute.
Exemple:
numere.in: 5 2 3 -20 1 6
numere.out: 10
numere.in:1 2 -10 -20 1 5 -1 7 -20 -30
numere.out:12
Răspunsuri la întrebare
#include<fstream>
using namespace std;
int main()
{
ifstream f("numere.in");ofstream g("numere.out");
//short int v[1000000]; //în principiu, dar ar crăpa în realitate, așa că facem rost altfel:
short int *v=new short int[1000000];
int n,Smax=0;
cin>>n;
for(int i=0;i<n;i++)f>>v[i];
for(int i=0;i<n;i++)
{
int S=0,lSmax=0;
for(int j=i;j<n;j++)
{
S+=v[i];
if(S>lSmax)lSmax=S;
}
if(lSmax<Smax)Smax=lSmax;
}
g<<Smax;
delete v; f.close(); g.close();
return 0;
}