Kezdőoldal » Számítástechnika » Programozás » Egy börtönben 1000 cella van,...

Egy börtönben 1000 cella van, mindegyikben egy rab ül. Kezdetben minden cella zárva van. A börtönőrnek játszani támad kedve: végigmegy az összes cella előtt és mindegyik ajtó zárján fordít egyet. Hasonlo keppen kell megoldani C ben is?

Figyelt kérdés

Fordításkor a nyitott cellát bezárja, illetve a zártat kinyitja. Ha végigment, elkezdi elölről, és minden második cella zárján fordít egyet. Aztán minden harmadikon fordít, és így tovább. Legvégül fordít egyet az ezrediken, és kész. Ezután amelyik cella ajtaja nincs bezárva, abból a rab elmehet. Kik a szerencsés rabok?


az en megoldasom mas program nyelvben .


class Solution {

public int[] prisonAfterNDays(int[] cells, int N) {

Set<String> set = new HashSet<>();

int size = 0;

boolean flag = false;

for(int i = 0; i < N; i++){

int[] nextState = new int[8];

for(int j = 1; j < 7; j++){

nextState[j] = (cells[j - 1] == cells[j + 1] ? 1 : 0);

}

String s = Arrays.toString(nextState);

if(!set.contains(s)){

set.add(s);

size++;

}

else{

flag = true;

break;

}

cells = nextState;

}

if(flag){

N = N % size;

for(int i = 0; i < N; i++){

int[] nextState = new int[8];

for(int j = 1; j < 7; j++){

nextState[j] = (cells[j - 1] == cells[j + 1] ? 1 : 0);

}

cells = nextState;

}

}


return cells;

}

}



2020. nov. 16. 21:58
 1/6 anonim ***** válasza:
100%
Biztos jó a feladat megfogalmazása? Ez egy ismert feladat. De nem ez a megfogalmazása, ez hibás így.
2020. nov. 16. 22:11
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
máshol is igy láttam megfogalmazva es sehol sem talalom meg C ben csak C++ ban s youtuben is inkabb C++ ban van de en C ben tanulok.
2020. nov. 16. 22:17
 3/6 anonim ***** válasza:
95%

#1: Igen - lásd:

* [link] - 10.11-es feladat, 26. oldal.

* [link]


nem keverendő ezzel:

* [link]


Kérdező: ezt nem te írtad, hanem "találtad" - mint azt már az előzőekben mondtad (ha te írtad volna, meg tudnád oldani C-ben is).

Mint azt már az előzőekben emlílettük: ne várd a sült galambot a szádba, ne oldasd meg mással a házi feladatodat, mert abból nem tanulsz.

2020. nov. 16. 22:29
Hasznos számodra ez a válasz?
 4/6 tabaki ***** válasza:

SimkoL kolléga honlapján (szintén pascal nyelven) láthatod, hogy a fentebbi PASPT.DOC programjánál is sokkal egyszerűbben megírható, mindenféle osztályok, halmazok, és a többi, számodra tökéletesen ismeretlen Java-varázslatok nélkül:

[link]

C-re fordítva SimkoL programja 24 sor – nem ám erősen töredékesen, mint a „tiéd”, hanem teljes hosszában, gyönyörűen tördelve –, és azokból is egy üres, hat pedig csak egyetlen kapcsos zárójelet tartalmaz. Nem közlöm. Ezt is zsebre tennéd, mint a többit, meggyőznéd magadat, hogy oké, ez is megvan, és semmi hasznát nem látnád a vizsgán. Ha majd úgy találod, hogy átlátod a feladatot, vedd elő az eszedet, próbáld lemodellezni, és állj elő egy valóban saját programmal. Ha nem egészen jön össze, semmi baj, kijavítjuk, de újra hangsúlyozom: Ez a napok óta tartó ámokfutásod ÉR-TEL-MET-LEN.

2020. nov. 17. 04:36
Hasznos számodra ez a válasz?
 5/6 xkiki2001 válasza:

Pythonban így oldottam meg, nem tudom mi ez a sok kód C-ben :D


cellak = []

for i in range(1001) :

cellak.append(0)


for i in range(1,1001) :

for j in range(1,1001) :

if(j%i == 0) : cellak[j] = not cellak[j]


print("Nyitott cellák: ")

for i in range(1,1001) :

if(cellak[i] == 1) : print(i)

2021. dec. 8. 21:50
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Hasonló a következő feladat a Rosetta Code-n

[link]

2021. dec. 9. 10:06
Hasznos számodra ez a válasz?

További 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!