Podniz s Maksimalnom sumom (algoritam?)

poruka: 11
|
čitano: 3.363
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom (algoritam?)
dakle imamo zadan niz od n integera,treba se naći podniz s maksimalnom sumom....Kako :/?
Moj PC  
0 1 hvala 0
17 godina
neaktivan
offline
RE: Podniz s Maksimalnom sumom (algoritam?)

Kaj fali ovome:

 

max = 0

za svaki podniz:

1) izračunaj sumu

2) vidi je li veća od max i promijeni max ako je

ispisi_max

 

16 godina
neaktivan
offline
RE: Podniz s Maksimalnom sumom (algoritam?)
Black Deus Typhon kaže...

Kaj fali ovome:

 

max = 0

za svaki podniz:

1) izračunaj sumu

2) vidi je li veća od max i promijeni max ako je

ispisi_max

 

Postoji 2n podnizova, pa bi to bilo dosta sporo :D

 

Nekako logično bi mi bilo da će podniz sa najvećom sumom biti podniz koji se sastoji od samo pozitivnih (nenegativnih) članova niza. Oni negativni će sumu samo moć smanjit.

Ako pak pozitivnih nema, onda maximalnu sumu ima jednočlan niz koji se sastoji od maximalnog elementa niza.

 

Ako se traži u nizu od n brojeva naći niz duljine k (k fixan) sa najvećom sumom, onda je to već malo teže i trebalo bi se ispitat dosta kombinacija.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom (algoritam?)
ona logika bas i ne vrijedi jer sto ako taj negativan umanji sumu za manje negoli je sljedeci puno uveca?stvarno nemam neke ideje,kombinacije naravno padaju jer je max n 30000,a tl 1 sec :/
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Podniz s Maksimalnom sumom (algoritam?)
PlayerOne kaže...
ona logika bas i ne vrijedi jer sto ako taj negativan umanji sumu za manje negoli je sljedeci puno uveca?stvarno nemam neke ideje,kombinacije naravno padaju jer je max n 30000,a tl 1 sec :/

Ako umeš sve pozitivne u sumu, negativni će samo umanjit.

I kod tvog primjera suma sa malim negativnim+veliki pozitivni je opet manja od suma bez malog negativnog+veliki pozitivni.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
odjavljen
offline
RE: Podniz s Maksimalnom sumom (algoritam?)
PlayerOne kaže...
ona logika bas i ne vrijedi jer sto ako taj negativan umanji sumu za manje negoli je sljedeci puno uveca?stvarno nemam neke ideje,kombinacije naravno padaju jer je max n 30000,a tl 1 sec :/

Podniz ne mora sadržavati samo one elemente koju su susjedni u nizu. Generalno, podniz se dobije iz polaznog niza preskakanjem članova, tako da, ukoliko nema dodatnih ograničenja, podniz sastavljen samo od pozitivnih članova je točno rješenje.

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom (algoritam?)
moje isprike radi krivog postavljanje zadatka,dakle u zadatku se trazi max suma podniza koji sadrzava susjedne clanove,tj.nema skakanja :)
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Podniz s Maksimalnom sumom (algoritam?)
PlayerOne kaže...
moje isprike radi krivog postavljanje zadatka,dakle u zadatku se trazi max suma podniza koji sadrzava susjedne clanove,tj.nema skakanja :)

E pa to je druga pjesma :D

 

Imam ideju kak to napravit, al je pitanje kak ću ja sad to objasnit :D Fali mi da ne vidiš moje mahanje rukama :D

 

Znači krećemo od sume cijelog niza, i s njom inicijaliziramo maximalnu sumu.

Radimo petlju po svim mogučim počecima podniza (petlja po i)

Zatim u petlji (po j) režemo krajnji element. Trenutna suma će bit lagana za izračunat je samo trebamo oduzet član niza koji smo odsjekli. To će biti suma podniza od niz[i] do niz[j].

Zatim odrežemo prvi element, opet je sumu od koje krećemo lako izračunat (cijela suma-niz[i])

 

I to provrtimo za sve.

 

Primjer kako bi se to vrtilo (di je novi red tu je rezanje prvog, inače je rezanje zadnjeg):

 

1 2 3 4 5

1 2 3 4

1 2 3

1 2

1

 

2 3 4 5

2 3 4

2 3

2

 

3 4 5

3 4

3

 

4 5

4

 

5

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom

Treba primjetiti da smetaju samo negativni brojevi, inace je rjesenje cijeli niz.

Postoji nekoliko algoritama.

DP - dinamicko programiranje, koje moze ovaj problem rjesiti u O( N )

Dp solucija radi na ovaj nacin.

Loopamo po nizu i rjesavamo :

  dp[ i ] = max( A[ i ], dp[ i- 1 ] + A[i] ); // Jeli bolje uzeti prosli i "i-ti" ili je bolje uzeti samo "i-ti".

 

dakle ukoliko imamo niz :

  Ar[] : 4 -2 3 -1 5

  Dp[] :4   2 5   4 9

rjesenje je uzeti cijeli niz i dobiti 9

 

Ar[] : 4 -5 2 1 -6 5

Dp[] :4 -1 2 3 -3 5

rjesenje je uzeti samo zadnji element i imati sumu 5.

 

Ar[] : -5 1 3 -3 4 -6 3 1 -2 2

dp[] : -5 1 4 1 5 -1 3 4   2 4

rjesenje je uzeti [ 2, 4 ] element i imati sumu 5.

 

Dp solucija moze imati prostornu slozenost O( 1 ) i vremensku O( N ) gdje je N duljina niza.

 

Nadam se da ovo pomaze.

Poruka je uređivana zadnji put ned 13.7.2014 21:55 (Budimir).
 
1 0 hvala 0
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom (algoritam?)

Smijem li pitati gdje si nasao ovaj zadatak ?

 
0 0 hvala 0
14 godina
neaktivan
offline
Podniz s Maksimalnom sumom (algoritam?)

Mioc - zatemas

Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice