Kezdőoldal » Számítástechnika » Programozás » Mátrix keresése mátrixban C#?

Mátrix keresése mátrixban C#?

Figyelt kérdés
Van egy nagyobb nxn-es illetve egy kisebb nxn es mátrix azt kéne megvizsgálni hogy a kisebb benne van e a nagyobba és ha igen akkor az első előfordulásával (i,j)-vel visszatérni ha meg nincs akkor 0,0 val? Valaki letudná írni hogy hogyan kéne ezt végrehajtani nem kell konkrét kód csak magát a folyamatot mert nem nagyon sikerül.

2020. nov. 21. 14:30
 1/9 anonim ***** válasza:

Most ezt csak simán meg akarod oldani vagy valami hatákony algoritmust szeretnél?


Ha csak "simán" is jó, akkor men végig mátrix elemeken és nézd meg, hogy attól a mezőtől egyezik-e a kis mátrix... és térj vissza a adott indexekkel, ha igen.


Ha hatákony algortmus kell, akkor arra keress google-ben, hogy two/multidimensional pattern matching.


pl: [link]

2020. nov. 21. 15:44
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

Megkeresed a kis mátrix bal felső elemét a nagy mátrixban és elkezded ellenőrizni, hogy meddig stimmel. Ha nem stimmel, akkor skip, keresel egy másik "bal felső" elemet és ugyanez. Ha stimmel, akkor megvan az első találat, ha egyáltalán nem stimmel sehol, akkor nincs találat.


Kérdés, hogy mit értesz a legelső előfordulás alatt... Ha mondjuk többször is szerepel a nagyban a kicsi, akkor attól függően, hogy sorfolytonosan vagy oszlopfolytonosan állsz neki keresgélni (esetleg valami kombinált módon), akkor más-más lehet az első előfordulás.

2020. nov. 21. 17:44
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Az első előfordulásnak a nagymatrixban annak a számnak a sorát és oszlopát ami a kis matrix bal felső sarkában van.Nem használhatok skipet vagy breaket semmi ilyesmit es sehogy se megy.
2020. nov. 21. 18:40
 4/9 anonim ***** válasza:
Mi az, hogy nem használgatsz break-et? Erről eddig nem volt szó... persze nem fontos break-et használni, de ezt nem említetted... mit nem használhatsz még?
2020. nov. 21. 18:45
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

#3: Ez rendben van, de pl. vegyük ezt:


Kis mátrix:


1 2

3 4


Nagy mátrix:


0 0 1 2 0 0

0 0 3 4 0 0

1 2 0 0 0 0

3 4 0 0 0 0

0 0 0 0 0 0


Ha oszlopfolytonosan keresem, akkor a 3. sorban lévőt találom meg először. Ha sorfolytonosan keresem, akkor a 3. oszlopban lévőt. :)

2020. nov. 21. 19:12
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
A feladatban amit kaptam abban csak egyszer szerepel a kicsi a nagyban es nincs megadva hogy melyiket kell ha több van szóval gondolom elég ha egynek megtalálja a koordinátáit
2020. nov. 21. 19:20
 7/9 anonim ***** válasza:

"sehogy se megy"


Tipp: Megkeresed a bal felső elemet a nagy mátrixban. Utána a jobbra és alatta lévő elemeket összeveted a kis mátrixal, hogy egyeznek-e. Ha igen, akkor megtaláltad.


Az előbbi válaszomban lévő példában ez így nézne ki:


Keresés elindul oszlopfolytonosan, megtalálja a 3. oszlopban a kis mátrix bal felső elemét (ez az "1"). Ez a [0][2] helyen van, feljegyzi egy változóba az indexet.


Innentől a következőket lépné még meg az algoritmusom (?= jelentése: egyenlő-e vizsgálat):


[0][3] ?= kismátrix[0][1]

[1][2] ?= kismátrix[1][0]

[1][3] ?= kismátrix[1][1]


Ha mindegyik egyezik, akkor megszakad a futása vagy amit akarsz és kiírja, hogy az első előfordulás a {eltárolt_index} helyen van a nagy mátrixban.


Ha valamelyik nem egyezik, akkor folytatódik a keresés, amint talál az algoritmus egy újabb potenciális "bal felső" elemet, átírja a változót, hogy ott van.


Amire figyelni kell, hogy ha egyáltalán nincs találat, akkor valahogy le kell kezelni, hogy az eltárolt változót ne írja ki... Pl. ha teljes egyezés van, akkor egy másik változó, pl. confirmed=true értéket kap és ha ez true, akkor kiírod, hogy találat van, ha false (ez legyen az alapérték), akkor meg kiírod, hogy nincs találat. Vagy bármi más, ez csak egy ötlet.

2020. nov. 21. 19:30
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Köszi, sikerült megcsinálnom magamtól de elég sok változóval ,majd megpróbálom a te ötleted alapján is.
2020. nov. 21. 19:36
 9/9 anonim ***** válasza:
Az nem baj, a lényeg, hogy működjön. Az én javaslatomhoz is biztosan kell még technikai változókat bevezetni, hogy működjön, sőt függvénybe is lehetne szervezni az egészet. Akár rekurzióval is meg lehet oldani a feladatot.
2020. nov. 21. 19:40
Hasznos számodra ez a válasz?

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!