Kezdőoldal » Számítástechnika » Programozás » Milyen módszerrel oldjam meg?...

Milyen módszerrel oldjam meg? (c#)

Figyelt kérdés
van egy állományom ami random számú (1,1000) kockákból áll. ezeknek két tulajdonsága van: egy hossz és egy tömeg, mindkettő ugyancsak random szám. egymásra kell helyezni őket: x hosszra és tömegre csak kisebb-egyenlőt lehet tenni. ezzel jár hogy lesznek kivételek amiknek pl hossza kisebb, de súlya nagyobb tehát kiesnek.felsőbb évesek azt mondták, hogy backtracking-gel oldjam meg, de mivel ez nem volt része a féléves anyagnak(nem tudom használni), bízom benne, hogy egyszerűbb módon is megoldható.próbáltam különféle feltételmegadásos, cserés rendzéssel, de az output sosem lesz helyes.

2014. nov. 25. 20:24
 1/6 Tengor ***** válasza:

Mi a cél? A lehető legmagasabb tornyot kell felépíteni?

Milyen algoritmusokat tanultatok?

2014. nov. 25. 20:29
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
igen a legmagasabb felépítése. egyszerű és összetett progtételeket tanultuk( másolás, kiválogatás, szétválogatás, metszet, únió, összefutás). gyak-on igazából nem írtuk meg őket, tehát még az is kihívás :) előző előadáson szóba került a brute force, de gyakorlaton azzal sem foglalkoztunk
2014. nov. 25. 20:39
 3/6 anonim válasza:
Igen.
2014. nov. 25. 21:08
Hasznos számodra ez a válasz?
 4/6 anonim válasza:
100%

-Mi az nagy, zöld és nem hallod, ha a hátad mögé lopakodik?

-????

-Hihetetlen Hulk.

2014. nov. 25. 21:20
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:
Nem kérek senkitől konkrét megoldást, úgy nem fejlődök, de egy útmutatásnak, hogy milyen irányból a legérdemesebb nekimenni, örülnék!
2014. nov. 26. 22:13
 6/6 anonim ***** válasza:

Szerintem előszöris rendezd növekvő sorrendbe súly szerint.

Ekkor lesz egy ilyesmi számsorod, ami a magasságokat jelenti:

2 1 3 2 5 7 4 9 3 13 11 12 14 10

Ebből már csak egy "részsorozat" kell kiválasztani, aminek az összege maximális.


Vedd sorba a magasságokat és egy listában tarts karban, hogy az adott elemet felhasználva mekkora a maximális torony


Most egy közbenső lépést írok le példának:

A 6. lépést követően ez a listád (Az első szám csak az adott helyen lévő magasságot jelenti):

2-2, 1-1, 3-5, 2-4, 5-10, 7-17, 4-, 9-, 3-, 13-, 11-, 12-, 14-, 10-


A következő magasság 4

Megkeresed a listában azt a legnagyobb számot, amelyik olyan helyen áll, amire a 4-est rá (vagyis alá) tudod helyezni.

Ez a 3-5, mert a 2-2, 1-1, 3-5, 2-4 jöhetne szóba (baloldali szám <=4), ezek közül ennél a legnagyobb a jobboldali szám. Az aktuális helyen tehát a maximális magasság: 5+4=9, tehát ezután a lépés után a számsorod:

2-2, 1-1, 3-5, 2-4, 5-10, 7-17, 4-9, 9-, 3-, 13-, 11-, 12-, 14-, 10-


Az algoritmus végén: (ha nem rontottam el)

2-2, 1-1, 3-5, 2-4, 5-10, 7-17, 4-9, 9-26, 3-8, 13-39, 11-37, 12-49, 14-63, 10-36


Ebből a listából már csak a legnagyobb (jobboldali) számot kell kiválasztnai. Tehát 63 a legmagasabb torony.

Ha szökséged van a konkrét kockákra is, akkor egye újabb listában tarts karban, hogy egy adott kockát melyikre raksz rá.


Amúgy gratu a tanárodnak, ez nem egy olyan gagyi kérdés, amit itt gykn fel szoktak általában tenni. Azt sem mondom, hogy legoptimálisabb az algoritmus, de legalább polinom idejű. Ha jobban érdekel, akkor neten olyasmire keress rá, hogy longest increasing subsequence (persze ha tudsz angolul, és ez nem is teljesen az, ami neked kell, dehasonló probléma)

2014. nov. 29. 19:57
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!