|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor:
![]() |
![]() |
|
Alati teme | Način prikaza |
|
![]() |
#1 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Postoji X ucenika i 1 profesor. Svaki od ucenika ima vremenski interval u kome je slobodan da uzme cas (startTime i endTime). Profesor radi od profesorStartTime do profesorEndTime.
Treba napisati fju koja ce umeti da rasporedi sve ucenike (njih X) u vremenskom intervalu profesorStartTime - profesorEndTime uzimajuci u obzir kada je koji ucenik slobodan. Nijedan vremenski uslov(interval) nesme biti prekrsen. Ukoliko nije moguce napraviti raspored, treba da vrati false. Uh tako nekako ![]() |
![]() |
![]() |
![]() |
#2 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Da dodam duzina casa je N, odnosno svaki put kad se pozove fja dodeljuje se nova duzina casa.
|
![]() |
![]() |
![]() |
#3 |
nobody
Expert
Datum učlanjenja: 19.04.2007
Poruke: 537
Hvala: 14
705 "Hvala" u 106 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Ovo verovatno neće biti odgovor kome se nadaš, ali možda pomogne:
http://www.unitime.org/ http://muller.unitime.org/Na prvom linku je open source aplikacija za pravljenje rasporeda, a na drugom imaš i neke radove koji se bave teorijskom (ima, čini mi se, i nekakvog koda u njima) stranom problema. |
![]() |
![]() |
"Hvala" nn.nn za poruku: |
![]() |
#5 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Ako ti nisu bitne performanse, uvek ostaje brute force:
Kôd:
# trazi redosled ucenika za koji je moguce napraviti raspored def rasporedi ucenici, profa, cas ucenici.keys.permutation.map{|redosled| poredjaj ucenici, profa, cas, redosled }.find{|e| e} end # za zadati redosled ucenika, odredjuje pocetak i kraj casa def poredjaj ucenici, profa, cas, redosled poc = profa.first redosled.inject({}) do |acc, ime| poc = [ucenici[ime].first, poc].max return nil if poc+cas > [profa.last, ucenici[ime].last].min acc[ime] = [poc, poc+cas] poc += cas acc end end ucenici = { pera: [6,8], # slobodan od 6 do 8 zika: [2,5], # slobodan od 2 do 5 mika: [1,3] # slobodan od 1 do 3 } profa = [1,8] # slobodan od 1 do 8 p rasporedi ucenici, profa, 1 #=> {:mika=>[1, 2], :zika=>[2, 3], :pera=>[6, 7]} p rasporedi ucenici, profa, 2 #=> {:mika=>[1, 3], :zika=>[3, 5], :pera=>[6, 8]}
__________________
blog |
![]() |
![]() |
3 članova zahvaljuje jablan za poruku: |
![]() |
#6 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Dakle, jablane ne samo pragnje nego i pivo da speres
![]() |
![]() |
![]() |
![]() |
#7 |
Ivan Dilber
Sir Write-a-Lot
|
![]() to bi trebalo da je jedan od ovih problema http://en.wikipedia.org/wiki/Dynamic_programming
__________________
Leadership is the art of getting people to want to do what you know must be done. |
![]() |
![]() |
2 članova zahvaljuje ivanhoe za poruku: |
![]() |
#8 |
član
Certified
Datum učlanjenja: 26.12.2007
Lokacija: juzno od ekvatora
Poruke: 91
Hvala: 2
4 "Hvala" u 3 poruka
![]() |
![]() prvo gledas da li je profesor zauzet, zatim definises array ucenika pa gledas ucenik[n]=false i onda mu dodelis timeslot
problem zaista deluje simple i cudi me da programer tvog kalibra nije mogao resiti |
![]() |
![]() |
![]() |
#9 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
![]() |
![]() @miloshz :-) :-) :-) :-)
Hajde probaj da ga optimalno rešiš :-)
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ |
![]() |
![]() |
"Hvala" DejanVesic za poruku: |
![]() |
Alati teme | |
Način prikaza | |
|
|