Kezdőoldal » Számítástechnika » Programozás » Ezt hogy kell megcsinálni?

Ezt hogy kell megcsinálni?

Figyelt kérdés

Az a feladat hogy kap a függvényem egy N számot és ki kell írnom növekvő sorrendben 1-től N-ig az összes olyan számot aminek a szomszédos számjegyei között pontosan 1 a különbség.

Pl. ha N = 50-et kapok akkor ezt kell kiírnom:

1 2 3 4 5 6 7 8 9 10 12 21 23 32 34 43 45

N értéke maximum 10^9 lehet.


Úgy csináltam hogy egy ciklusban végigmegyek 1-től N-ig a számokon, stringgé alakítom, végigmegyek a számjegyeken és megnézem hogy 1-e a különbség az előzőhőz képest.

Ez kis számokra működik is de nagy N-re nagyon sokáig fut.

Hogy kéne rendesen megcsinálni?



2021. okt. 26. 09:21
1 2
 1/17 anonim ***** válasza:
0%

"a szomszédos számjegyei között pontosan 1 a különbség"

Mármint legalább egy ilyen szomszédos pár van, vagy csak ilyen párok vannak benne? Pl. a 125 is ilyen, vagy csak a 123?

2021. okt. 26. 09:29
Hasznos számodra ez a válasz?
 2/17 Pelenkásfiú ***** válasza:
44%

Lehet, hogy nem végigmenni kéne az összes számon és ellenőrizni, hogy megfelel-e a feltételnek, hanem konkrétan csak ezeket generálni sorban.

De még én is csak gondolkozom rajta..

(Egyébként az egyjegyűeket miért kell kiírni? Azt nem találom logikusnak.)

2021. okt. 26. 09:39
Hasznos számodra ez a válasz?
 3/17 A kérdező kommentje:

1-es "szomszédos számjegyei között pontosan 1 a különbség". 2 és 5 között nem 1 a különbség.

De gyengébbek kedvéért 100 és 200 között pl. ezek: 101 121 123

1000 és 1300 között: 1010 1012 1210 1212 1232 1234

2021. okt. 26. 09:44
 4/17 anonim ***** válasza:
71%

Ez egy egyszeru BFS mintapelda (vagy DFS rendezessel).

Milyen nyelv? Ha delutanig nem segit mas, akkor osszedobok majd egy gyors megoldast.

2021. okt. 26. 09:56
Hasznos számodra ez a válasz?
 5/17 anonim ***** válasza:
0%

veszed a szám utolsó számjegyét, beleteszed egy átmeneti változóba

leosztod a számot 10-zel és az egész részét összehasonlítod az átmeneti változóval

ha jó, akkor állítod az átmeneti változót az új értékre és mész tovább (osztás 100-zal)

csinálod amíg az adott szám kisebb mint amivel osztanál

2021. okt. 26. 09:56
Hasznos számodra ez a válasz?
 6/17 anonim ***** válasza:
0%

Én szerintem csinálnék egy for ciklust, ami mindig annyival nő, amely helyiértéknél vagyunk.

A 10-eseknél 10-zel, viszont 100-asoknál már 100-zal.

És azonbelül pedig egy rekurzív függvény lenni.


A rekuzívfüggvényt meghívjuk a következő helyiértékre az előző helyiértéken álló számhoz képest +-1-gyel.

Tehát 100-nál a rekurzív függvényt 0-val és 2-vel hívjuk meg.

A 0-n belül 1 és -1, a -1 nyilván nem jó.

A 2-nél pedig 1 és 3.


Ha legkisebb helyiértéknél vagyunk, akkor vége. Így az eredmény 101, 121 és 123


Majd lépünk a legnagyobb helyiértékkel, és nézzük, hogy 200 belül mi van.


És így tovább.

2021. okt. 26. 09:57
Hasznos számodra ez a válasz?
 7/17 anonim ***** válasza:
0%
az is jó, amit a 4-es írt, sőt a lista generálásához jobb is, amit én írtam az csak egy függvény ami eldönti, hogy az adott kritériumnak megfelel-e a vizsgált szám
2021. okt. 26. 09:58
Hasznos számodra ez a válasz?
 8/17 Pelenkásfiú ***** válasza:
17%

Én valami ilyesmire gondoltam:

[link]


Persze ez így félkész.

De a 10-jegyűeket is kidobja egy pillanat alatt. :)

2021. okt. 26. 10:04
Hasznos számodra ez a válasz?
 9/17 A kérdező kommentje:
Köszönöm a válaszokat, 4-es küldött jó megoldást.
2021. okt. 26. 10:15
 10/17 anonim ***** válasza:
26%
Ezért szeretem a gyakorit. A kérdések 99%-a triviális, de néha bejön egy-egy ilyen. Estefelé visszanézek, megpróbálok kitalálni valamit.
2021. okt. 26. 10:23
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!