Zápočtový test 18.1.

vojta_vorel at 2012-01-18 16:46:58

Zadání v příloze (nejspíš bude trvale taky na strákách Jozefa Jiráska).
Na první pohled hustý, na další pohledy taky, ale myslím že většina lidí to tam udělala.
Bylo nám řečeno něco ve smyslu: "Procházení všech možností je moc pomalé, ale jinak každá heuristika která vás napadne bude nejspíš ok".
Můj postup:

vektor vektorů charů - stav věcí
vektor slov
vektor vektorů pointrů na chary ve stavu věcí - kolonky pro slova
vektor intů - prmutace pi pořadí kolonek (heuristika- prostřídání svislých a vodorovných)
vektor boolů - záznam o už použitých slovech
přímé načtení vstupu do stavu, z něj detekce kolonek (zvlášť svislé, zvlášť vodorovné)
rekurzivní fce s parametrem level (číslo), která si lokálně uloží kopii stavu a záznamu o slovech, najde všechny slova, která by šla v daném stavu nacpat do pi(level)-té kolonky a zkusí pustit fci na všechny takto upravené stavy, pokud některá vrátí true nebo je už vše plné, vrátí true. Jinak vrátí false a stav do původního stavu.

Ta heuristika je divná a určitě neefektivní, ideální by bylo, kdyby se každá zpracovávaná kolonka křížila s předchozí, rekurze by se pak fakt málo rozvětvovala. Mě to ty vstupy zpracovávalo tak 5 vtěřin.

přeju úspěch, Vojta

Attachments:

miso at 2013-01-12 02:52:48

Je dobre si pre kazdy slot spocitat, kolko slotov ho krizi, potom si sloty zoradit zostupne podla tohto udaju a prechadzat ich zaradom. Takto to dava riesenie na vsetkych 6 vstupov maximalne za 0.5 sekundy.

http://uloz.to/xvmTShP/test3-zip