Sedlové body: sedlový bod matice je takový prvek, který je největší ve svém řádku a nejmenší ve svém sloupci, nebo nejmenší ve svém řádku a největší ve svém sloupci. Napište program, který načte matici ze vstupního souboru a vyhledá její sedlové body.
Parametry: vstupní soubor. Ahoj nevíte se s tím někdo rady? :) děkuju za odpoveď
Fórum › Java
Sedlové body matice
V podstatě v zadání máš návod:
1. najdu v řádcích minimum a maximum a zapamatuji si, ve kterých sloupcích leží
2. najdu ve sloupcích minimum a maximum, zapamatuji si, ve kterých řádcích leží
3. projdu minima řádků a otestuji, zda se ve stejném prvku nachází maximum ze sloupce
4. projdu maxima řádků a otestuji, zda se ve stejném prvku nachází minimum ze sloupce
Body 3 a 4 by asi šli zpracovat jedním cyklem
hu
#4 Flowy
měl jsem na mysli v každém řádku najít minimum a maximum a v každém sloupci najít minimum a maximum a pamatovat si, kde leží - vzniknou 4 seznamy extrémů: minima řádků, maxima řádků, minima sloupců a maxima sloupců (každý z těchto prvků splňuje jednu podmínku pro sedlový bod). Sedlové body jsou ty prvky matice, které se nacházejí v:
a) seznamu minima řádků a současně seznamu maxima sloupců
b) seznamu maxima řádků a současně seznamu minima sloupců
hu
Ještě jedna možnost, jak na to:
1. vytvoř dvourozměrné pole stejně velké, jako původní matice
2. původní matici procházej po řádcích, do pomocného pole zapiš 0x01 do stejného místa, kde je minimum a 0x02 do stejného místa kde je maximum v řádku původní matice. Ostatní prvky pom. pole nastav na 0. Proveď pro každý řádek
3. původní matici procházej po sloupcích, do pomocného pole pomocí bitového OR vlož 0x10 do stejného místa, kde je minimum a 0x20 do stejného místa kde je maximum v původní matici. Ostatní prvky pom. pole nech nedotčené. Proveď pro každý sloupec.
4. Tam, kde se v pom. poli nachází hodnota 0x21 (řádek max, sloupec min) nebo 0x12 (řádek min, sloupec max), se v původní matici nachází sedlové body.
Jak začít - třeba načíst matici ze souboru do dvourozměrného pole. Chtělo by to vědět víc o organizaci zdrojového souboru (nebo si ji máš určit sám?).
hu
#6 hlucheucho
podobne riesenie napadlo aj mna a asi by bolo lacnejsie ... ak by to malo byt aj jednoduchsie tak by sa zapisovalo pri prechadzani riadku 1 pre max a -1 pre min a pri prechadzani stlpca by sa skontrolovalo ci v tabulke na danom mieste kde sme nasli min je 1 a na mieste kde sme nasli max tak je -1
tvoje riesenie by sa dalo celkom lahko preniest do objektov a usetrit tak pamet pri zbytocnom vytvarani celej kopie tabulky (ukladal si len dve premenne - ci je v nom max/min riadku a max/min stlpca ... nove objekty by sa vytvarali len pri prechadzani riadkov a pri prechadzani stlpcov by sa pripadne len dopisoval udaj pre stlpce (max/min) ak dany objekt bol uz vytvoreny)
Tak něco osvědčeného, třeba csv. Možná i tady na fóru najdeš, jak ho přečíst. V podstatě textový soubor, kde je řádek ukončen znaky CR LF a položky v řádku jsou odděleny ; (středníkem). Aby nebylo problém mít připravené pole správné velikosti, v prvním řádku souboru by mohl být rozměr. Další řádky by obsahovaly prvky matice - řádek souboru = řádek matice. Takový soubor snadno vytvoříš i v Notepadu - pro ladění programu budeš testovací soubor potřebovat.
hu
To by mě zajímalo, co na té škole děláš, když si ani neumíš do google napsat práce se soubory java a přečíst si jak alespoň otevřít a načíst data ze souboru.
http://www.sspbrno.cz/~lenka.hruskova/programovani/java/soubory/Java-prace-se-soubory.pdf
hu
to je potom těžký. "Do jazyk můj kmen": načti matici ze souboru (třeba csv) a najdi v ní sedlové body. Aby to mělo smysl, tak ty někam vypiš (do souboru?) nebo vypiš matici s vyznačením sedlových bodů (jak má výstup vypadat v zadání chybí - asi vlastní tvořivost). Velkou část zadání představuje definice sedlového bodu.
To, co jsem tu pak rozepsal byl v hrubých rysech algoritmus, co udělat s načtenými daty aby byl požadovaný výsledek. Algoritmus pak napíšeš v programovacím jazyce ve kterém děláš - v tomto případě Java. K realizaci vyhledání sedlových bodů by ti mělo stačit několik cyklů (for) a podmínek (if).
hu
#14 Robin93
Jak by vypadal vi kazdy, kdo tu psal (krom tebe). Ostatne se te snazi dokopat k predvedeni snahy. Kdyz tu budes davat kusy kodu a ptat se na konkretni dotazy, tak te urcite nekdo rad pomuze dostrkat spravnym smerem.
Ale zatim je tu jen snaha z nas vysockovat hotovej kod. Takze nase snaha za tebe neco naprogramovat odpovida tvoji snaze neco udelat.
Pochopil jsem to správně?..
Výsledkem jsou tedy body:
[1, 2] = 3
a [3, 3] = 3
A ještě by mě zajímalo, jestli je to správný postup, když mám například řádek 2 2 3 a mám vybrat minimum. Je správně, když vyberu obě dvojky?
medzi minimom a najmensim prvkom je rozdiel ... kazda mnozina ma svoje minimum ale nie kazda musi mat najmensi prvok (ak existuje najmensi prvok tak je zaroven aj minimom ... da sa povedat ze najmensi prvok je podmnozina minima ktora existuje len v pripade ak ma minimum prave jeden prvok) ... ale zase minimum a najnizsia hodnota v mnozine su si rovne (ak je mnozina usporiadana podla hodnoty) ... zalezi na tom ako to ma zadane pripadne podla definicie sedloveho bodu
podla zadania hladas len najmensie prvky ... budes hladat minimum a zaroven si zapisovat kolko krat si ho nasiel ... ak to bude prave 1 tak je to zaroven najmensi prvok
Takže dejme tomu, že půjdu po jednotlivých prvcích matice a na každým ověřím, jestli je:
(nejmenší ve svém sloupci) && (největší ve svém řádku) && (nevyskytuje se víckrát pro tento sloupec a řádek) || (největší ve svém sloupci) && (nejmenší ve svém řádku) && (nevyskytuje se víckrát pro tento sloupec a řádek)
když to splní, tak uložím pozici
Tímhle bych měl tedy získat sedlové body?
ano to su podmienky ale ak by si toto pocital pre kazdy prvok tak sa dostanes k extremne zbytocnej zlozitosti ... sposob akym si to hladal v tych obrazkoch bol o dost rychlejsi pretoze hladas najmensi a najvecsi prvok pre kazdy stlpec/riadok len raz
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Stacionární body a extrémy — založil Vojtěch
C# primka mezi dvema body — založil Kryspin
Libcurl http post body — založil Michal
Konvexnost,konkavnost a inflexni body — založil MikiII
Moderátoři diskuze