Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Слични документи
Microsoft Word - ZadaciBacktrackingKombinatorika.doc

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Uvod u računarstvo 2+2

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Tutoring System for Distance Learning of Java Programming Language

P1.2 Analiza efikasnosti algoritama 2

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Microsoft PowerPoint - C-4-1

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

P1.1 Analiza efikasnosti algoritama 1

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Рачунарска интелигенција

Funkcije predavač: Nadežda Jakšić

P11.3 Analiza zivotnog veka, Graf smetnji

Računarski praktikum I - Vježbe 11 - Funktori

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Програмирај!

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

My_P_Red_Bin_Zbir_Free

2015_k2_z12.dvi

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

Dinamičko programiranje Primer 1: Za dati niz naći njegov najduži neopadajući podniz. Defnicija: podniz nekog niza je niz koji se dobija izbacivanjem

P3.2 Paralelno programiranje 2

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Uvod u računarstvo 2+2

P2.1 Projektovanje paralelnih algoritama 1

Funkcije predavač: Nadežda Jakšić

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

08 RSA1

Matematka 1 Zadaci za vežbe Oktobar Uvod 1.1. Izračunati vrednost izraza (bez upotrebe pomoćnih sredstava): ( ) [ a) : b) 3 3

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K.

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

070-ALIP2-udzbenik.indb

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

1. Apsolutni pobednik na glasanju vreme memorija ulaz izlaz 0,1 s 64 Mb standardni ulaz standardni izla Apsolutni pobednik izbora je onaj ko osvoji ba

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (

Uvod u takmičarsko programiranje

Algoritmi SŠ P1

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Classroom Expectations

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Uvod u računarstvo 2+2

SAŽETAK Diplomski rad, kroz teorijsku razradu i prikaz praktične primjene na primjeru aplikacije za pretragu studentskih poslova, obrađuje temu računa

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

PROMENLJIVE, TIPOVI PROMENLJIVIH

1

PowerPoint Presentation

Državna matura iz informatike

Grananje u programu predavač: Nadežda Jakšić

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Tutoring System for Distance Learning of Java Programming Language

PRIRODNO-MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA MATEMATIKU I INFORMATIKU ZADACI SA REŠENJIMA SA PRIJEMNOG ISPITA IZ MATEMATIKE, JUN Odrediti

Programiranje 1

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Задатак 4: Центрифугална пумпа познате карактеристике при n = 2900 min -1 ради на инсталацији приказаној на слици и потискује воду из резервоара А у р

PITANJA I ZADACI ZA II KOLOKVIJUM IZ MATEMATIKE I Pitanja o nizovima Nizovi Realni niz i njegov podniz. Tačka nagomilavanja niza i granična vrednost(l

9. : , ( )

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Microsoft PowerPoint - Datoteke [Compatibility Mode]

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

07_PJISP_II_Predavanja

VEŽBE IZ OPERACIONIH ISTRAŽIVANJA

Matematika 1 - izborna

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

ДРУШТВО ФИЗИЧАРА СРБИЈЕ МИНИСТАРСТВО ПРОСВЕТЕ И СПОРТА РЕПУБЛИКЕ СРБИЈЕ Задаци за републичко такмичење ученика средњих школа 2006/2007 године I разред

ПРИРОДА И ЗНАК РЕШЕЊА 2 b ax bx c 0 x1 x2 2 D b 4ac a ( сви задаци су решени) c b D xx 1 2 x1/2 a 2a УСЛОВИ Решења реална и различита D>0 Решења реалн

Skripte2013

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Microsoft Word - O nekim klasicnim kvadratnim Diofantovim jednacinama.docx

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Računarski praktikum I - Vježbe 01 - Uvod

Algoritmi

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Slide 1

Microsoft Word - ASIMPTOTE FUNKCIJA.doc

Алгоритми засновани на рођенданском парадоксу и примене

MAT KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XX (2)(2014), PELLOVA JEDNAČINA I PITAGORIN

Programski jezik C

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

Microsoft Word - 7. cas za studente.doc

МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Информатика и рачунарство за шести разред разред Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа

My_P_Trigo_Zbir_Free

Verovatnoća - kolokvijum 17. decembar Profesor daje dva tipa ispita,,,težak ispit i,,lak ispit. Verovatnoća da student dobije težak ispit je

P9.1 Dodela resursa, Bojenje grafa

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Pojačavači

Microsoft Word - 1.Operacije i zakoni operacija

Транскрипт:

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar 2016 1 Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova strategija rekurzivno razbija problem na 2 ili više potproblema dok oni ne postanu dovoljno jednostavni da se mogu direktno rešiti. Rešenja potproblema se kombinuju da bi se dobilo rešenje početnog problema. Korektnost strategije se obično pokazuje matematičkom indukcijom, a složenost se dobija rešavanjem diferencnih jednačina. Primeri podeli-pa-vladaj algoritama su FFT, kviksort, sortiranje spajanjem, Euklidov algoritam, binarna pretraga itd. 1.1 Kviksort Složenost ovog algoritma je u najgorem sluǎju O(n 2 ) (kada se za pivot bira uvek najmanji element što je slučaj i u algoritmu koji je ovde naveden). U praksi se koristi algoritam koji za pivot biva proizvoljan (random) element niza i tada je prosečna složenost algoritma O(n log n). Dodatan memorijski prostor koji se koristi je veličine O(1). Napomena: Kada se ispituje složenost algoritma sortiranja izračunava se broj poredenja tokom njegovog izvršavanja. Algoritam Razdvajanje (X, Levi, Desni) Ulaz X (niz), Levi (leva granica niza), Desni (desna granica niza) Izlaz indeks S takav da je X[i] X[S] za sve i S i X[j] > X[S] za sve j > S pivot = X[Levi]; L = Levi; D = Desni; while L < D while X[L] pivot && L D L = L + 1; if L > Desni L = Desni; while X[D] > pivot && D Levi D = D 1; if L < D zameni X[L], X[D]; S = D; zameni X[Levi], X[S]; return S; Algoritam Q Sort (X, Levi, Desni) Ulaz X, leva i desna granica dela niza koji se sortira Izlaz sortirani deo niza X if Levi < Desni S = Razdvajanje(X, Levi, Desni); Q sort(x, Levi, S 1); Q sort(x, S + 1, Desni); 1

Algoritam Kviksort (X, n) Ulaz X (niz od n brojeva) Izlaz sortirani niz X Q sort(x, 1, n); 1. Algoritmom Kviksort prikazati postupak sortiranja brojeva 8, 11, 5, 14, 3, 9, 10, 2, 12, 1, 15, 7, 6, 4, 13. Rešenje: (pivoti su podebljani) 8 11 5 14 3 9 10 2 12 1 15 7 6 4 13 8 4 5 14 3 9 10 2 12 1 15 7 6 11 13 (zamenjeni 11 i 4) 8 4 5 6 3 9 10 2 12 1 15 7 14 11 13 (zamenjeni 14 i 6) 8 4 5 6 3 7 10 2 12 1 15 9 14 11 13 (zamenjeni 9 i 7) 8 4 5 6 3 7 1 2 12 10 15 9 14 11 13 (zamenjeni 10 i 1; L pokazuje na br. 12, D na br. 2) 2 4 5 6 3 7 1 8 12 10 15 9 14 11 13 (zamenjeni 8 i 2) 2 4 5 6 3 7 1 (bira se pivot za prvu polovinu niza - do broja 8) 2 1 5 6 3 7 4 (zamenjeni 4 i 1; L pokazuje na br. 5, D na br. 1) 1 2 5 6 3 7 4 (zamenjeni 2 i 1) 5 6 3 7 4 (bira se pivot za podniz od 5 do 4) 5 4 3 7 6 (zamenjeni 6 i 4) 3 4 5 7 6 (zamenjeni 5 i 3) 7 6 (bira se pivot za podniz 7, 6) 6 7 (zamenjeni 7 i 6) 12 10 15 9 14 11 13 (bira se pivot za podniz 12,...,13) 12 10 11 9 14 15 13 (zamenjeni 15 i 11) 9 10 11 12 14 15 13 (zamenjeni 12 i 9) 9 10 11 (bira se pivot za podniz 9, 10, 11, nema promena) 14 15 13 (bira se pivot za podniz 14, 15, 13) 14 13 15 (zamenjeni 15 i 13) 13 14 15 (zamenjeni 14 i 13) Prepisivanjem zadnjeg broja u svakoj koloni dobija se sortirani niz. Formulacija algoritma je preuzeta iz profesorove knjige. U knjizi se nalazi primer sortiranja još jednog niza. 1.2 Sortiranje spajanjem (Merge sort) Sortiranje spajanjem koristi strategiju podeli pa vladaj za sortiranje niza brojeva. I danas se ovaj algoritam koristi u bibliotekama mnogih programskih jezika. Početni poziv algoritma je Merge sort (X, 0, n-1) Algoritam Merge sort (Sortiranje spajanjem)(x, l, r) Ulaz niz X i njegove granice l i r Izlaz sortirani niz X if l < r m = (l + r)/2 Merge_sort(X, l, m) Merge_sort(X, m + 1, r) Merge(X, l, m, r) Algoritam Merge(X, l, m, r) Ulaz niz X i granice sortiranih podnizova koje treba spojiti: l, m i m + 1, r Izlaz sortirani niz X iskopiraj X[l..m] na pozicije l..m niza Y i = l, j = m+1, k = l 2

while i <= m && j <= r, X[k++] = (Y[i] < X[j])? Y[i++] : X[j++] // Ulazi se u samo jednu od naredne 2 petlje while i <= m, X[k++] = Y[i++] /* Naredni deo koda nije potreban. Zasto? while j <= r, X[k++] = X[j++] */ Sortiranje spajanjem je jako stabilan algoritam i ima vremensku složenost O(n log n), a prostornu O(n). Primetimo da se u algoritmu Merge kopira samo polovina niza X u niz Y. 3

2. Sortirati spajanjem niz brojeva 38, 27, 43, 3, 9, 82, 10. REŠENJE: 3. Sortirati spajanjem niz brojeva 11, 4, 14, 3, 9, 10, 2, 12, 1, 15, 7, 6, 5, 13. REŠENJE: 11 4 14 3 9 10 2 12 1 15 7 6 5 13 11 4 14 3 9 10 2 12 1 15 7 6 5 13 11 4 14 3 9 10 2 12 1 15 7 6 5 13 11 4 14 3 9 10 2 12 1 15 7 6 5 13 4 11 3 14 9 10 2 1 12 7 15 5 6 13 3 4 11 14 2 9 10 1 7 12 15 5 6 13 2 3 4 9 10 11 14 1 5 6 7 12 13 15 1 2 3 4 5 6 7 9 10 11 12 13 14 15 1.3 Jednačine zasnovane na dekompoziciji U slučaju kada se obrada ulaza veličine n svodi na a obrada ulaza veličine n b i potrebno je izvršiti još c nk koraka, jednačina izgleda ovako: T (n) = at ( n b ) + c nk gde je a, b, c, k 0, b 0 i dato je T (1). 4

Master teorema: Rešenje gornje jednačine je: O(n log b a ), T (n) = O(n k log n), O(n k ), a > b k a = b k a < b k Dokaz: pri odredivanju složenosti za dati problem koristi se rekurzivno stablo. Svaki čvor ovog stabla predstavlja jedan rekurzivni poziv, pri čemu koren predstavlja prvi rekurzivni poziv. Na nivou j nalazi se a j čvorova a veličina ulaza je n b. Broj koraka koji se izvrši na nivou j (bez koraka u rekurzivnim podpozivima) je a j c ( n j b ) k = c n k ( a ) j. U j b k svakom sledećem nivou veličina ulaza se smanjuje tako što se deli sa b. Zato je broj nivoa u stablu log b n. Iz prethodne dve činjenice sledi da je ukupan broj koraka: T (n) = log b n j=0 c n k ( a log b n b k )j = c n k ( a b k )j U dokazima se koristi i jednakost: 1 + r + r 2 +... + r p = rp+1 1 r 1 j=0 = 1 rp+1 1 r, gde je r = a. Slučajevi: b k 1. Koristi se da za r > 1 važi 1 + r + r 2 +... + r p r p r r 1. Ako uvedemo oznaku za konstantu c 2 = r onda zamenom p = log b n dobijamo: log b n j=0 r j r log b n r r 1 r 1, = ( a ) log b k b n c 2 = alog b n c n k 2 gde je pa je T (n) c n k alog b n c n k 2 = c 3 a log b n. Pošto važi da je a log b n = n log b a (može se proveriti logaritmovanjem leve i desne strane za osnovu b), sledi da je složenost u O notaciji O(n log b a ). Broj a log b n je broj listova u rekurzivnom stablu, tj. u ovom slučaju se najviše posla obavlja u listovima rekurzivnog stabla. 2. Direktno sledi iz vrednosti sume. U ovom slučaju se ista količina posla obavlja na svakom nivou rekurzivnog stabla. 3. Važi da je r < 1 pa je prethodna suma manja od konstante 1 1 r odakle direktno sledi da je broj koraka c 1 n k. U ovom slučaju najviše posla se obavlja u korenu rekurzivnog stabla. 4. Za sledeće algoritme napisati jednačinu koja predstavlja složenost tih algoritama (broj koraka je broj uporedivanja u algoritmu), i izračunati složenost tih algoritama u O notaciji: a) binarna pretraga b) kviksort (pod pretpostavkom da pivot uvek razdvaja niz na dva jednaka dela) c) sortiranje spajanjem (merge sort) REŠENJE: a) T (n) = T ( n 2 ) + c, koristeći master teoremu dobijamo da je složenost O(log n). b) T (n) = 2T ( n 2 ) + c n, koristeći master teoremu dobijamo da je složenost O(n log n). c) isto kao pod b) 5. Izračunati složenost u O notaciji algoritama čija se složenost izračunava pomoću sledećih rekurentnih relacija: a) T (n) = 5T ( n 2 ) + c n2 b) T (n) = 27T ( n 3 ) + n3 c) T (n) = 5T ( n 2 ) + 5 n3 REŠENJE: a) O(nlog 2 5 ) b) O(n 3 log n) c) O(n 3 ) 5

2 Algoritamske strategije - bektreking Bektreking algoritmi tragaju za svim rešenjima nekog problema. Najpoznatiji problem ove vrste je problem osam kraljica (dama). Ovi algoritmi su posebno korisni kada se lako mogu odbaciti mnoge mogućnosti za rešenja. Neki probliemi koji se rešavaju na ovaj način su rešavanje ukrštenica, slagalica, Sudokua. Ovi algoritmi nalaze se u osnovi logičkih programskih jezika, npr. Prologa. 6. Napisati funkciju u C-u koja na ulazu prima dva celobrojna niza A i B, oba dimenzije n, i na izlaz štampa sve moguće nizove dimenzije n koji na i-toj poziciji imaju ili broj A[i] ili broj B[i], i čija se svaka dva uzastopna člana razlikuju najviše za 5. Npr. za nizove A: 3 1 7 B: 6 0 4 na ekran treba da se odštampa 3 1 4 3 0 4 6 1 4 REŠENJE 1 - gruba sila, LOŠE (neefikasno) rešenje: void mesavina (int a[], int b[], int c[], int i, int n) int j; if (i == n) for (j=0; j<n-1; j++) if (abs(c[j] - c[j+1]) > 5) break; if (j == n-1) for (j=0; j<n; j++) printf("%d ",c[j]); printf("\n"); else c[i] = a[i]; mesavina (a, b, c, i+1, n); c[i] = b[i]; mesavina (a, b, c, i+1, n); REŠENJE 2 - korišćenje odsecanja, DOBRO (efikasnije) rešenje: void mesavina (int a[], int b[], int c[], int i, int n) int j; if (i == n) for (j=0; j<n; j++) printf("%d ",c[j]); printf("\n"); else if (i==0 abs (a[i] - c[i-1]) <= 5) // odsecanje c[i] = a[i]; mesavina (a, b, c, i+1, n); if (i==0 abs (b[i] - c[i-1]) <= 5) // odsecanje c[i] = b[i]; mesavina (a, b, c, i+1, n); 6

Bolje je da se kad god je to moguće uradi odsecanje, tj. da se ne izvršavaju oni rekurzivni pozivi koji ne mogu da dovedu do rešenja. 7. Napisati C program koji za datu sumu S i dati niz v koji sadrži vrednosti novčanica pronalazi sva rešenja za rasitnjavanja sume S. Pretpostaviti da svake novčanice ima proizvoljno mnogo. U čemu je razlika ovog zadataka i zadatka rešavanog tehnikom pohlepnog algoritma? Rešenje:Naredni kod u.c fajlu #include <stdio.h> int s; /* novcani iznos koji treba razbiti */ int n; /* broj razlicitih novcanica */ int v[10]; /* vrednosti novcanica/apoena */ int x[10]; /* kolicina pojedinih apoena */ void pisi() int i; printf("\nrazmena: \n"); for(i=0; i<n; i++) printf("%d dinara:%d puta ", v[i],x[i]); printf("\n"); void razmeni(int k, int s) //k = redni broj apoena //s = tekuca suma za rasitnjavanje int i; if(k>=n) if(s==0) pisi(); else // i oznacava broj apoena k koje koristimo u sumi for(i=0; i<=s/v[k]; i++) x[k]=i; razmeni(k+1, s-i*v[k]); main() int i; printf("unesite sumu i broj novcanica\n"); scanf("%d%d",&s,&n); printf("\nunesite vrednost za %d novcanica\n",n); for(i=0; i<n;i++) scanf("%d",&v[i]); 7

razmeni(0,s); 8. Dat je niz celih brojeva a[0]...a[n-1] i ceo broj S. Napisati program koji postavlja operatore + - * / u izrazu (...(a[0]?a[1])?a[2])...)?a[n-1] tako da vrednost izraza bude S. Naći sva rešenja. Dat je C program (bez f-je ispisa). int s; /* vrednost izraza */ int n; /* broj operanada */ int jeste; /*indikator 0/1 da li vrednost izraza je s*/ int a[50]; /* vrednosti operanada izraza */ int z[50]; /* niz operatora izraza */ void racunaj(int k, int ts) //k = redni broj primenjen operacije //ts = tekuca suma izraza if(k==n-1) if(ts==s) pisi(); jeste=1; else /*formiranje operatora unutar izraza */ z[k]= + ; racunaj(k+1, ts+a[k+1]); z[k]= - ; racunaj(k+1, ts-a[k+1]); z[k]= * ; racunaj(k+1, ts*a[k+1]); if(a[k+1]!=0) z[k]= / ; racunaj(k+1, ts/a[k+1]); main() int i; printf("unesite vrednost izraza i broj operanada izraza\n"); scanf("%d%d",&s,&n); printf("\nunesite vrednost za %d operanada\n",n); for(i=0; i<n;i++) scanf("%d",&a[i]); jeste=0; racunaj(0,a[0]); if (!jeste) printf("\nnema resenja\n"); 9. Napisati program koji rešava igru Moj broj. Rešenje:Program koje uglavnom nalazi dobro rešenje problema. 8