Kezdőoldal » Számítástechnika » Programozás » Hogy kéne megoldani ezt a...

Hogy kéne megoldani ezt a feladatot? (C# de mindegy a nyelv végülis)

Figyelt kérdés

Józsika egy osztálytársával játszik. Van N darab üveggolyójuk egy kupacban. N 1-100000 intervallumban lehet.

Egyik körben Józsika vesz el X darab golyót a kupacból, másik körben az osztálytársa úgy, hogy X csak négyzet szám lehet, tehát 1, 4, 9, 16, 25 stb. Az a játékos nyer, aki az utolsó golyót elveszi.

Ha optimálisan játszanak, megnyerheti-e Józsika a játékot, feltéve, hogy mindig ő kezd?



2020. júl. 11. 18:36
A kérdező szavazást indított:
Tudok megoldást, segítek
Tudok megoldást, nem segítek
Nem vagyok biztos benne, hogy tudok megoldást
Nem tudok megoldást, de úgy csinálok mintha tudnék és írok valami absztrakt ötletet
Nem tudok megoldást
14 szavazat
1 2 3 4 5 6
 1/51 A kérdező kommentje:
Odáig jutottam hogy ki tudom gyűjteni 1-től N-ig a négyzetszámokat, de felhasználni már nem tudom hogy kéne őket pontosan. Milyen sorrendben kéne vizsgálni stb.
2020. júl. 11. 18:39
 2/51 anonim ***** válasza:
25%

Minek kigyüjteni?


Gondolom itt véletlenül akarsz generálni.


1. Legenerálod az N üveggolyót amely 1-100000 között lehet csak.

2. Legenerálod melyik játékos kezdjen.

3. Józsit minden körben generál, de maximum annyit, amennyi üveggolyó van.

4. Az osztályársára csak négyzettszámot generálhatsz, de maximum annyit amennyi még van.

5. Minden körbe csak annyit generálsz, amennyi még maradt.

2020. júl. 11. 19:26
Hasznos számodra ez a válasz?
 3/51 anonim ***** válasza:
0%
Én mindig megnézném hogy mekkora a legtöbb golyó amennyit ki tudnak venni ( tehát a golyók számától kisebb, legnagyobb lehetséges négyzetszám) es azt vonnám ki mindig
2020. júl. 11. 19:35
Hasznos számodra ez a válasz?
 4/51 A kérdező kommentje:

#2 Nem értem ezt a generálgatást.

Úgy kéne megvalósítani a megolást elvileg, hogy van egy függvény ami paraméterként kap egy N számot és visszaad egy boolean értéket, hogy nyerhet-e Józsika. Azt írtam a kérdésben, hogy mindig Józsika kezd.

Pl. 1-nél ő nyer, mert elvesz egyet és nyert.

2-nél nem nyerhet, mert csak 1-et vehet el, de aztán a másik elveszi az utolsót.

3-nál szintén Józsika nyer (elvesz 1-et, a másik is 1-et és Józsika az utolsót).

A 4 négyzet szám, így Józsika első körben el tudja venni az egészet és nyer.

5-nél Józsika elvehet 1-et vagy 4-et. Ha 1-et vesz el akkor a másik elvesz 4-et és nyert. Ha 4-et vesz el, akkor a másik elvesz 1-et és megintcsak nyert.

És így tovább.

2020. júl. 11. 19:44
 5/51 anonim ***** válasza:
35%
Ha mindig Józsika kezd és az a kérdés, hogy NYERHET-e Józsika, ha Ő kezd akkor nyerhet, hiszen kezdésnek a maximális értéket veszi el. Az osztálytársa csak akkor nyerhet, ha ő kezd és négyzetszám a teljes összeg, mert csak négyzetszámot tud elvenni.
2020. júl. 11. 19:49
Hasznos számodra ez a válasz?
 6/51 A kérdező kommentje:

Lehet én írtam ki félreérthetően a kérdést, de mindketten csak négyzetszámot tudnak elvenni.

De ez a példákból is látszik szerintem amit az előző hozzászólásomban írtam.

2020. júl. 11. 19:54
 7/51 anonim ***** válasza:
35%
Jaaa. Azt hittem csak az osztálytársa vehet el négyzetszámot. :)
2020. júl. 11. 20:12
Hasznos számodra ez a válasz?
 8/51 A kérdező kommentje:

#3 ha ilyen egyszerű lenne a dolog, akkor nem írtam volna ki a kérdést.

8-nál ha elveszi Józsika a lehető legtöbbet (4-et) akkor veszít, mert a következő körben a másik elveszi a maradék 4-et.

Ha viszont 8-ból 1-et vesz el Józsika, akkor nyer.

Marad 7 ugye, abból 4-et vagy 1-et vehet el a másik. Ha 4-et vesz el, akkor marad 3 és Józsika nyer.

Ha 1-et vesz el, akkor marad 6. Józsika elvesz 4-et és megintcsak ő nyer.

2020. júl. 11. 20:13
 9/51 anonim ***** válasza:
6%

Na akkor xd

Ha ugye N a paraméter:

boolean J = true;

int golyok = N;

while(golyok !=0){

Itt kivonod a golyókból az N-nél kisebb lehető legnagyobb négyzetszámot (tehát pl n az 10, akkor itt golyok -= 9;)

J!=J (ez itt csak arra kell hogy Józsi köre-e vagy nem)

}

Return J;

2020. júl. 11. 20:31
Hasznos számodra ez a válasz?
 10/51 A kérdező kommentje:

#9 elolvastad az előző hozzászólásomat?

Tegyük fel 8 a paraméter, a te logikád szerint Józsika elvesz belőle 4-et (9 ugye a következő négyzetszám, de annyit nem tud elvenni 8-ból), marad 4. Az osztálytársa elveszi a maradék 4-et és Józsika veszített.

Ez rossz válasz, mivel ha Józsika 4 helyett 1-et vesz el az első körben, akkor optimális játékkal nyer és a kérdés az, hogy nyerhet-e.

2020. júl. 11. 20:57
1 2 3 4 5 6

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!