Kezdőoldal » Számítástechnika » Programozás » Ezt hogy lehet optimálisabban...

Ezt hogy lehet optimálisabban megoldani?

Figyelt kérdés

"Kedvenc táblás csokink kétféle kiszerelésben kapható. Az egyik A darab szegmensből áll, a másik B darabból. Mi összesen C darab szegmenst szeretnénk vásárolni.

Ha csak egész táblákat vehetünk és mindkét kiszerelésből korlátlan számban vásárolhatunk, akkor mennyi szegmensünk lehet maximum, ami még nem több C darabnál?

1 <= A, B, C <= 1000"


Pl.:

A = 5

B = 7

C = 13

Megoldás: 12

Magyarázat:

- vehetünk 2db B-t, de 2*7>13 és nem akarunk többet C-nél

- vehetünk 1db A-t és 1db B-t, ez 12 lesz, eggyel kisebb C=13-nál, potenciális megoldás

- vehetünk 2db A-t, ez 10 lesz, ez is egy potenciális megoldás, de az előzővel jobban járunk

- vehetünk 1db A-t vagy 1db B-t, de ezeknél jobban járunk a korábbi potenciális megoldással

- van még végtelen számú más lehetőség, de ezek mind nagyobbak C-nél


Megcsináltam rekurzívan mélységben-először kereséssel de már 30 körüli értékekre is percekig fut bizonyos esetekben és elvileg 1000 a maximum.



2022. márc. 19. 11:55
1 2
 1/11 anonim ***** válasza:
0%

Én elindulnék a keresett számmal, majd leosztanám modulo az egyik számmal, majd az eredményt a másikkal. Ha nem jön ki 0 eredmény, akkor eggyel kisebb számra, majd megint eggyel kisebbre.

Példa

1. 13 mod 7 = 6 => 6 mod 5 = 1 => nem jó

2. 12 mod 7 = 5 => 5 mod 5 = 0 => jó

2022. márc. 19. 12:14
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

1-es köszi a választ, de nem egészen értem ez hogy adna jó megoldást.

Vegyünk pl. A=17, B=11, C=43-at. Itt 39 a jó megoldás.

39 mod 17 = 5, 5 mod 11 = 5

39 mod 11 = 6, 6 mod 17 = 6

Nem jött ki 0 egyikre sem.

Ki tudnád fejteni kicsit?

2022. márc. 19. 12:33
 3/11 anonim ***** válasza:
Lehet, hogy nem jó :)
2022. márc. 19. 12:51
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

Ugy latom ez egy kozepiskolai feladat, itt nyilvan agyuval verebre a DFS. Tanitanak egyaltalan DFS-t kozepiskolaban?

A sima brute force megoldas 2 for loop meg egy maximum kivalasztas, azzal csinald, O(C^2) lesz a time complexity, par ms alatt le kell futnia a legrosszabb esetre is (1 1 1000).

2022. márc. 19. 13:25
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

Basszus túlbonyolítottam :D Működik köszi.

De egyébként mélységben kereséssel sem kellene lassúnak lennie nem?

2022. márc. 19. 14:09
 6/11 anonim ***** válasza:

Sokkal gyorsabbnak kell lennie a DFS-nek, ha jol van implementalva, de az mar DP terulet, olyat plane nem tanitanak kozepiskolaban.

A brute force O(C^2)/O(1) time/space, a DFS+DP O(C)/O(C).

DFS DP nelkul O(2^C)/O(C), te valoszinuleg ezt implementaltad, azert lassu mar kis ertekekre is.

2022. márc. 19. 14:28
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

Egy verzió C#-ban tetszőleges számú szegmensre. Azonos összegű részmegoldások közül mindig a legkisebb darabszámút tárolja el.

[link]

2022. márc. 19. 17:30
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Köszönöm egyelőre maradok annál amit 4-es javasolt, az 8 sor volt kb. De átnézem ezt is ha lesz időm.
2022. márc. 19. 17:56
 9/11 anonim ***** válasza:
0%

Én nem értem az itteni válaszokat... DFS meg DP... négyzetes sőt exponenciális futásidejű meg lineáris tárigényű megoldások?


Mi a francnak? Itt egyetlen for ciklusról van szó könyörgöm.


Ez valami általános iskolás feladat.


Nettó 5 sorban a megoldás (a többi csak sallang):


int a = 5;

int b = 7;

int c = 13;


int d = c;

for (int i = 0; i < c; i += a)

{

    int rem = (c - i) % b;

    if (rem < d)

    {

        d = rem;

    }

}


Console.WriteLine("max szegmens: " + (c - d));

2022. márc. 20. 20:56
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

#9 ha nem erted a valaszokat, akkor erdemes lenne elolvasnod a kerdeseket.

Ugy jott fel a DFS, hogy a kerdezo azzal implementalta, konkretan benne van a kerdesben.

Aztan kerdezte, hogy "De egyébként mélységben kereséssel sem kellene lassúnak lennie nem?", igy jott fel a DP.

A brute force megoldas pedig mint legegyszerubb megoldas kerult szoba az elejen, ahhoz meg modulo sem kell.

2022. márc. 20. 21:18
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!