Hogyan oldjam meg?
Adott n darab pont. Határozd meg azt a legnagyobb négyzetet, amit ezekből a pontokból alkothatunk!
Addig sikerült eljutnom, hogy 4 pontról megállapítom, hogy négyzet-e.
A tanár annyi segítséget adott, hogy: "4 for vagy backtracking".
Előre is köszi a segítséget!
- Kivalasztasz 4 pontot
- Ha negyzetet alkotnak, akkor kiszamolod a teruletet
- Ha ez nagyobb mint az eddigi legnagyobb terulet, akkor eltarolod a pontokat
- Vissza az elejere
A nehezen mar tulvagy, a 4 pont kivalasztasat megirhatod 4 for ciklussal es kesz is van.
Én úgy csinálnám hogy ha van N pontod akkor kell egy NxN méretű mátrix M ahol az M(i,j) elem megadja az i és j pont távolságát. Ez után csak meg kell nézni hogy van olyan M(j,k) elem ami megegyezik ezzel a távolsággal ahol k=/=i, ha igen akkor megnézed M(k,l)-re is és végül M(l,i)-re. Ha van ilyen i,j,k,l négyes, akkor az egy rombusz. Meg kell nézni hogy M(i,k)==M(j,l) igaz e, ha igen, akkor az egy négyzet.
Bonyolultnak hangzik, de nagyon egyszerű és viszonylag gyors. Ha a legnagyobb M(i,j) elemmel kezded a keresést és csökkenő sorrendben haladsz, akkor az első találat egészen biztosan a legnagyobb négyzetet fogja visszaadni.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!