|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Comoderator Of Ru Algorithms 2:5002/46.4 10 Apr 2003 07:59:52 To : All Subject : faq --------------------------------------------------------------------------------
06 Àïð 03 12:18, Mike Galushkin wrote to ilya voronin:
=== Hà÷àëî q_01-10.txt ===
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³Îòâåòû íà ÷àñòî çàäàâàåìûå âîïpîñû êîíôåpåíöèé RU.ALGORITHM è NICE.SOURCES³
³ ³
³ Ñîñòàâèòåëè: Alexander Dedusenko [2:462/42] ³
³ Dmitry Pryadkin [2:5010/207.3],³
³ polox@chel.ru ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Îòêðûòûå âîïðîñû:
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
!Q1. Àëãîðèòì ïåðåáîðà âñåõ êîìáèíàöèé ñèìâîëîâ ñòðîêè áåç èñïîëüçîâàíèÿ
ðåêóðñèè.
Ïðèìå÷àíèå: âû ìîæåòå çàäàâàòü âîïðîñû ïðÿìî â netmail: 2:5010/207.3
èëè e-mail: polox@chel.ru. Åñëè îíè áóäóò ðàñöåíåíû êàê ïîäïàäàþùèå ïîä
òåìàòèêó óêàçàííûõ êîíôåðåíöèé, òî îíè áóäóò âêëþ÷åíû â äàííûé ñïèñîê.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Îãëàâëåíèå (îòâå÷åííûå âîïðîñû):
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q1. Ãäå íàéòè çàäà÷è ïî ïpîãpàììèpîâàíèþ.
Q2. ×òî òàêîå ýâpèñòè÷åñêèé ïîèñê.
Q3. ×òî òàêîå "çîëîòîå ñå÷åíèå".
Q4. ×òî òàêîå êîíå÷íûå àâòîìàòû.
Q5. Êàê ïåpåâåñòè ÷èñëî èç øåñòíàäöàòèpè÷íîé ñèñòåìû â äåñÿòè÷íyþ (Asm)
Q6. Dec2Hex (áåç îãpàíè÷åíèÿ íà ââîäèìîå ÷èñëî)?
Q7. Êàê ïîñòpîèòü ëàáèpèíò?
Q8. Àëãîpèòì èçîápàæåíèÿ ëèíèé
Q9. Àëãîpèòì QSort
Q10. Àëãîpèòì ñîpòèpîâêè Øåëëà
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q1. Ãäå íàéòè çàäà÷è ïî ïpîãpàììèpîâàíèþ?
A. Many peoples
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
http://acm.gui.uva.es/problemset/
http://gsu.unibel.by -> ïîèñê -> påñypñû inet -> îëèìïèàäû
http://dl.gsu.unibel.by - Tàì ïîpÿäêà 500 çàäà÷.
http://informatics.vspu.kirov.ru/anton
http://bytic.ttk.ru
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q2. ×òî òàêîå ýâpèñòè÷åñêèé ïîèñê?
A. (Serv Ponomarev 2:5020/1564.7)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Ñyòü ýâpèñòè÷åñêîãî ïîèñêà - ñîêpàùåíèå ÷èñëà ïåpåáèpàåìûõ âàpèàíòîâ áåç
ïîòåpè êà÷åñòâà påøåíèÿ, áëàãîäàpÿ ñîäåpæàùåéñÿ â çàäà÷å äîïîëíèòåëüíîé
èíôîpìàöèè.
Ê ïpèìåpy, ïpè çàäà÷å ïpîêëàäêè êpàò÷àéøåãî ìàpøpyòà ìåæäy òî÷êàìè,
ïîäîáíîé èíôîpìàöèåé ìîæåò ÿâëÿòñÿ pàññòîÿíèå ïî ïpÿìîé îò òåêyùåé òî÷êè äî
ôèíèøà. Ò.ê. êîpî÷å ïpÿìîãî ïyòü ïpîëîæåí áûòü íå ìîæåò, òî ýòî pàññòîÿíèå
ìîæíî ñìåëî y÷èòûâàòü ïpè ïåpåáîpå, íå îïàñàÿñü ïîòåpè îïòèìàëüíîãî påøåíèÿ.
 òåîpèè, ïîèñê îñyùåñòâëÿåòñÿ ïî äåpåây ñîñòîÿíèé (õîòÿ íà ïpàêòèêå ýòî
÷àñòî íå òàê). Ðàñêpûòü âåpøèíy - çíà÷èò ïîñòpîèòü âñå âîçìîæíûå ïåpåõîäû èç
äàííîãî ñîñòîÿíèÿ.
Ýâpèñòè÷åñêèé ïîèñê ïîçâîëÿåò îïpåäåëèòü, êàêyþ èç íåpàñêpûòûõ âåpøèí
ñëåäyåò pàñêpûòü ïåpâîé, äàáû yìåíüøèòü îáùåå ÷èñëî ïåpåáèpàåìûõ âàpèàíòîâ.
Äëÿ ýòîãî äëÿ êàæäîé âåpøèíû îïpåäåëÿåòñÿ çíà÷åíèå ýâpèñòè÷åñêîé ôyíêöèè è
pàñêpûâàåòñÿ âåpøèíà, èìåþùàÿ ìèíèìàëüíîå çíà÷åíèå (åñëè òàêèõ âåpøèí
íåñêîëüêî, âûáèpàåòñÿ òà, ÷òî áëèæå ê êîpíþ).
Ýâpèñòè÷åñêàÿ ôyíêöèÿ ïîêàçûâàåò ìèíèìàëüíîå êîëè÷åñòâî påñypñîâ (âpåìåíè,
pàññòîÿíèÿ...), íåîáõîäèìûõ äëÿ äîñòèæåíèÿ ôèíèøà. Îíà ñîñòîèò èç äâyõ
ñëàãàåìûõ: yæå çàòpà÷åííûõ påñypñîâ è îöåíêè òîãî, ñêîëüêî påñypñîâ åùå
ïpèäåòñÿ ïîòpàòèòü.
Åñëè îöåíêà ïpåäñòîÿùèõ çàòpàò ÿâëÿåòñÿ ñòpîãîé íèæíåé ãpàíèöåé äëÿ
påàëüíûõ çàòpàò ïî äîñòèæåíèþ ôèíèøà, òî òàêîé àëãîpèòì âñåãäà áyäåò ïpèâîäèòü
ê îïòèìàëüíîìy påøåíèþ.
Âîçüìåì ê ïpèìåpy òpàíñïîpòíyþ çàäà÷y: äàí íàïpàâëåííûé ãpàô çàòpàò íà
ïåpåâîçêè ìåæäy ãîpîäàìè, äàíû ïîòpåáíîñòè êàæäîãî ãîpîäà â íàøåì òîâàpå,
ïpèñyòñòâyåò òpàíñïîòpíîå ñpåäñòâî, pàçâîçÿùåå òîâàp. Hàäî íàéòè òpàåêòîpèþ,
ìèíèìèçèpyþùyþ çàòpàòû ïî ïpîéäåííîìy òpàíñïîpòíûì ñpåäñòâîì pàññòîÿíèþ.
Øàã 1: Ðàññêpûâàåì êîpåíü. Ïî âñåì äîpîãàì, èäyùèì èç ñêëàäà îòïpàâëÿåì
òpàíñïîpòíîå ñpåäñòâî, çàãpyæåííîå ïîä çàâÿçêy. Ñîîòâåòñòâåííî ïîëy÷àåì
êîëè÷åñòâî âåpøèí, pàâíîå êîëè÷åñòây äîpîã. Äëÿ êàæäîé âåpøèíû yæå èçâåñòíû
çàòpàòû ïî åå äîñòèæåíèþ. Òpàíñïîpòíîå ñpåäñòâî ïåpåãpyæàåò ñâîé ãpyç â ãîpîä,
äî ïîëíîãî íàñûùåíèÿ îíîãî.
Øàã 2: Îïpåäåëÿåì pàñêpûâàåìyþ âåpøèíy. Îïpåäåëèì ïpåäñòîÿùèå çàòpàòû êàê:
ìèíèìàëüíàÿ äëèííà äîpîãè èç äàííîãî ãîpîäà + 2*max(íàèìåíüøàÿ äëèííà äîpîãè îò
ñêëàäà | pàññòîÿíèå îò ñêëàäà äî áëèæàéøåãî íåîáñëyæåííîãî ãîpîäà)*(áëèæàéøåå
öåëîå, áîëüøåå (pàçíèöà ìåæäy ñyììàpíîé ïîòpåáíîñòüþ âñåõ ãîpîäîâ è êîëè÷åñòâîì
ãpyçà â òpàíñïîpòíîì ñpåäñòâå)/(ãpyçîïîäüåìíîñòü òp. ñpåäñòâà))). Ýòà îöåíêà
ÿâëÿåòñÿ ñòpîãîé íèæíåé ãpàíèöåé påàëüíûõ çàòpàò. Ñ÷èòàåì ýâpèñòèêy, îïpåäåëÿåì
ìèíèìyì.
Øàã 3: Ðàñêpûâàåì âûápàííyþ âåpøèíy. Ïpè ýòîì òàêæå pàñêpûâàåòñÿ ïyòü,
èäyùèé îápàòíî ê ñêëàäy, äàæå åñëè òp. ñpåäñòâî íå ïyñòîå. Äëÿ ýòîãî ïyòè
íåîáõîäèìî ïîëíîñòüþ ïåpåñ÷èòàòü yæå íàêîïëåííûå çàòpàòû, äàáû òpàíñïîpòîå
ñpåäñòâî âîçâpàùàëîñü íà ñêëàä ïyñòûì (Ýòî â ñëy÷àå îïòèìèçàöèè íå ïî
ïpîéäåííîìy ïyòè, à ïî ñòîèìîñòè ïpîãîíà è ò.ä.). Åñëè òpàíñïîpòíîå ñpåäñòâî
ïyñòîå, âñå pàâíî pàñêpûâàþòñÿ âñå äîpîãè. Çàòpàòû ïî äîñòèæåíèþ íîâûõ âåpøèí
pàâíû ñyììå çàòpàò ïî äîñòèæåíèþ pîäèòåëüñêîé âåpøèíû è ñòîèìîñòè ïåpåãîíà îò
pîäèòåëüñêîãî ãîpîäà. Çàòpàòû ïî äîñòèæåíèþ âåpøèíû - ýòî çàòpàòû ïî äîñòèæåíèþ
ñîñòîÿíèÿ, îïèñûâàåìîãî ýòîé âåpøèíîé.
Øàã 4: Åñëè åùå íå âñå ãîpîäà îáñëyæåíû, GOTO 2. Åñëè âñå ãîpîäà îáñëyæåíû
òî íyæíî âåpíyòü òp. ñpåäñòâî íà ñêëàä. Äëÿ ýòîãî çàìåíÿåì îöåíêy ïpåäñòîÿùèõ
çàòpàò íà pàññòîÿíèå ïî ïpÿìîé äî ñêëàäà è ñïîêîéíî påøàåì çàäà÷y íàõîæäåíèÿ
êpàò÷àéøåãî ïyòè (çàìåíà ïpîèçâîäèòñÿ òîëüêî äëÿ âåpøèí, êîòîpûå yæå îáñëyæèëè
âñå ãîpîäà. Ïpî÷èå âåpøèíû ñ÷èòàþòñÿ ïî ñòàpîìy). Åñëè òp. ñpåäñòâî íà ñêëàäå -
ìû íàøëè îïòèìàëüíûé ìàpøpyò.
Øàã 5: Ðàçâîpà÷èâàÿ ïyòü îò íàéäåííîé îïòèìàëüíîé âåpøèíû íàâåpõ, äî êîpíÿ,
ïîëy÷èì îïòèìàëüíyþ òpàåêòîpèþ.
×yþ, ïîpà ñêàçàòü ïàpy ñëîâ î âûáîpå ýâpèñòè÷åñêîé ôyíêöèè. Ýâp. ôyíêöèÿ -
òà ôyíêöèÿ, ïî êîòîpîé ñ÷èòàþòñÿ ïpåäñòîÿùèå çàòpàòû. Êàê yæå ãîâîpèëîñü, îíà
äîëæíà áûòü ñòpîãîé íèæíåé ãpàíèöåé påàëüíûõ çàòpàò, åñëè òpåáyåòñÿ ïîëy÷èòü
îïòèìyì.
×åì áëèæå îöåíêà ïpåäñòîÿùèõ çàòpàò ïîäõîäèò ê påàëüíûì çàòpàòàì, òåì
ñèëüíåå ýâpèñòè÷åñêàÿ ôyíêöèÿ, ò.å. òåì ìåíüøå ïîòpåáyåòñÿ pàñêpûâàòü âåpøèí
äëÿ äîñòèæåíèÿ påøåíèÿ.
Î òîì, êàêyþ êîíêpåòíî ôyíêöèþ ñëåäyåò ïpèìåíÿòü â êàæäîé êîíêpåòíîé
çàäà÷å, ñëåäyåò äyìàòü, èñõîäÿ èç äîïîëíèòåëüíûõ äàííûõ, ñîäåpæàùèõñÿ â çàäà÷å.
Hàïpèìåp, â ïpèâåäåííîì ïpèìåpå ÿ pyêîâîäñòâîâàëñÿ ñëåäyþùåé äîïîëíèòåëüíîé
èíôîpìàöèåé:
- Ìèíèìàëüíûé ïyòü, êîòîpûé ñëåäyåò ïpîäåëàòü òp. ñpåäñòây, äàáû
ïîêèíyòü òåêyùèé ãîpîä, pàâåí äëèííå ñàìîé êîpîòêîé äîpîãè èç ýòîãî ãîpîäà.
-  ñëy÷àå, åñëè çàãpyçêè òp. ñpåäñòâà íå õâàòèò, ÷òî-áû yäîâëåòâîpèòü
ïîòpåáíîñòü âñåõ ãîpîäîâ, ïpèäåòñÿ ãîíÿòü òp. ñpåäñòâî íà ñêëàä, à ïîòîì íà
íåîáñëyæåííûå ãîpîäà. Ìèíèìàëüíîå ÷èñëî òàêèõ ïpîãîíîâ pàâíî áëèæàéøåìy öåëîìy,
áîëüøåìy pàçíèöû ìåæäy ñyììàpíîé ïîòpåáíîñòüþ ãîpîäîâ è òåêyùèì çàãpyçîì òp.
ñpåäñòâà, ïîäåëåííîé íà ïîëíyþ ãpyçîïîäüåìíîñòü òp. ñpåäñòâà.
- Äëÿ îñyùåñòâëåíèÿ òàêîãî ïpîãîíà íåîáõîäèìî äîápàòüñÿ ñî ñêëàäà äî
áëèæàéøåãî íåîáñëyæåííîãî ãîpîäà, à ïîòîì îïÿòü âåpíyòüñÿ íà ñêëàä.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q3. ×òî òàêîå "çîëîòîå ñå÷åíèå" ?
A. (Viktor Dorogov 2:5020/1456.11)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Èíîãäà ïpèõîäèòñÿ íàõîäèòü òî÷êy ýêñòpåìyìà íåêîòîpîé ôyíêöèè, âû÷èñëÿÿ
çíà÷åíèÿ ýòîé ôyíêöèè â pàçíûõ òî÷êàõ îòpåçêà è ñpàâíèâàÿ èõ ìåæäy ñîáîé,
òîåñòü ìåòîäîì ïîèñêà. Îêàçûâàåòñÿ, ÷òî â îïòèìàëüíîì àëãîpèòìå ïîèñêà
òpåáyåòñÿ âûáèpàòü òî÷êè äëÿ âû÷èñëåíèé òàê, ÷òîáû îíè påàëèçîâàëè "çîëîòîå
ñå÷åíèå" îòpåçêîâ, êîòîpûå ïîÿâëÿþòñÿ â ïpîöåññå påøåíèÿ.
"Çîëîòîå ñå÷åíèå" - ñïîñîá pàçäåëèòü îòpåçîê AB íà äâå íåpàâíûå ÷àñòè
òî÷êîé X òàê, ÷òîáû âûïîëíÿëîñü yñëîâèå AX/XB = XB/AB.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q4. ×òî òàêîå êîíå÷íûå àâòîìàòû.
A. (George Potapoff gopher@glasnet.ru)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Êîíå÷íûé àâòîìàò ìîæíî ïpåäñòàâèòü â âèäå òàáëèöû
+----+------------------------------------+
| | Ñîñòîÿíèå |
+ +-----+-----+-------------+-----+
| | q1 | q2 | ........ | qn |
+----+----+-----+-----+-------------+-----+
| Ñ | c1 |qn1,c|qn2,c| | |
| È +----+-----+-----+-------------+-----+
| Ì | c2 | | | | |
| Â +----+-----+-----+-------------+-----+
| Î | . | . . . . . . . . |
| Ë +----+-----+-------------------+-----+
| | cn | | | |
+----+----+-----+-------------------+-----+
Çäåñü Ñîñòîÿíèå --- ñîñòîÿíèå, â êîòîpîì íàõîäèòñÿ àâòîìàò â ìîìåíò
ïpî÷èòûâàíèÿ î÷åpåäíîãî ñèìâîëà, Ñèìâîë --- ñèìâîë, êîòîpûé ñ÷èòûâàåò
àâòîìàò. Hà ïåpåñå÷åíèè â êëåòêå çàïèñàíî íîâîå ñîñòîÿíèå, â êîòîpîå
äîëæåí ïåpåéòè àâòîìàò, è äåéñòâèå, êîòîpîå îí äîëæåí âûïîëíèòü ---
îáû÷íî, ýòî íàïå÷àòàòü êàêîé ëèáî ñèìâîë.
Hàïpèìåp, íàäî pàçîápàòü èäåíòèôèêàòîp â òåêñòå ïpîãpàììû:
id ::= <áyêâà>{öèôpà|áyêâà}
(íà÷èíàåòñÿ ñ áyêâû, äàëåå èäåò ïpîèçâîëüíàÿ ñìåñü áyêâ è öèôp,
îêàí÷èâàåòñÿ, åñëè âñòpåòèëñÿ íå áyêâåííîöèôpîâîé ñèìâîë)
Àâòîìàò áyäåò ïpèìåpíî òàêîé:
+-------------------+
| Ñîñòîÿíèå |
+---------+---------+
| Start | Ident |
+--+---+---------+---------+
|C | á | | |
|È | y | Ident, | Ident, |
|Ì | ê |<nothing>|<nothing>|
|Â | â | | |
|Î | à | | |
|Ë +---+---------+---------+
| | ö | | |
| | è | | Ident, |
| | ô | |<nothing>|
| | p | | |
| | à | | |
| +---+---------+---------+
| | ä | | |
| | p | | Start, |
| | y | |<çàíåñòè |
| | ã | | íîâîå |
| | î | | èìÿ â |
| | å | | òàáëèöy>|
+--+---+---------+---------+
Ñëåäyåò çàìåòèòü, ÷òî <áyêâà>, <öèôpà> è <äpyãîå> --- ýòî â îáùåì
ñëy÷àå íå îäíà ÿ÷åéêà, à ìíîãî (ò.å. âìåñòî <áyêâà> íàäî ïîäñòàâèòü
a,b,c,d,e... è ò.ä., âìåñòî <öèôpà> -- 1,2,3,4,5,6,7,8,9,0, âìåñòî
<äpyãîå> --- âñå îñòàëüíîå)
Ïpîãpàììèpyåòñÿ ýòî äîâîëüíî ëåãêî.  îáùåì ñëy÷àå:
/* îïpåäåëÿåì êîíñòàíòû îáîçíà÷àþùèå ñîñòîÿíèÿ */
#define STATE_1 1
#define STATE_2 2
....
#define STATE_N N
int state; /* çäåñü õpàíèòñÿ íàøå òåêyùåå ñîñòîÿíèå */
char symbol; /* ýòî ñèìâîë, êîòîpûé ìû ñ÷èòàëè */
..
main() {
FILE * input;
..
input = fopen("Input_file");
/* îñíîâíîé àëãîpèòì pàçáîpà */
while(! feof(input) ) {
c = fgetc(input);
switch (state) { /* âûáèpàåì íyæíyþ êîëîíêy Ñîñòîÿíèÿ */
case STATE_1:
switch(c) { /* âûáèpàåì íyæíyþ ñòpîêy Ñèìâîë */
case 'a':
do_some_action(); /* âûïîëíÿåì äåéñòâèå, çàïèñàííîå â
êëåòêå òàáëèöû */
state = STATE_2; /* ïåpåõîäèì â íîâîå ñîñòîÿíèå */
break;
case 'b':
...
} /* end switch */
case STATE_2:
...
} /* end switch */
} /* end while */
fclose(input);
..
} /* end main */
Åùå ìîæíî påàëèçîâàòü â âèäå òàáëèöû yêàçàòåëåé íà ôyíêöèè è ò.ä.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q5. Êàê áûñòpî ïåpåâåñòè ÷èñëî èç øåñòíàäöàòèpè÷íîé ñèñòåìû â äåñÿòè÷íyþ?
A. (George Yohng 2:454/1.68)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;âõîä: AL == ïåpâûé ñèìâîë (åãî êîä)
; AH == âòîpîé ñèìâîë
;
;âûõîä: AL == ÷èñëî (áàéò)
;
c2byte proc
sub ax,3030h
cmp al,9
jbe @cont1
sub al,7
@cont1:
cmp ah,9
jbe @cont2
sub ah,7
@cont2:
xchg ah,al
shl ah,4
add al,ah
ret
c2byte endp
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q6. Dec2Hex (áåç îãpàíè÷åíèÿ íà ââîäèìîå ÷èñëî)?
A. (Akzhan Abdulin 2:5040/55)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
function dec2hex(value: dword): string[8];
const
hexdigit = '0123456789ABCDEF';
begin
while value <> 0 do
begin
dec2hex := hexdigit[succ(value and $F)];
value := value shr 4;
end;
if dec2hex = '' then dec2hex := '0';
end;
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q7. Êàê ïîñòpîèòü ëàáèpèíò?
A. (Mitya Dorogoj 2:5000/54.4)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FullFill - íà ñîëüêî ïëîòíî çàïîëíÿòü ëàáèpèíò (äåëàòü ëè õîëëû).
WallShort- íà ñêîëüêî êîpîòêèå äîëæíû áûòü ñòåíû 0 - îäíè êîëîííû.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int size = 20;
const int fullfill = 100; // in %
const int wallshort= 50; // in %
char m[size+1][size+1];
// Random generator
int r[2][size/2*size/2];
int h; // How many number in array;
void initrandom ()
{
int j=0;
for (int y=2; y<size; y+=2)
for (int x=2; x< size; x+=2)
{
r[0][j] = x; r[1][j] = y; j++;
}
h=j-1;
}
int getrandom(int &x, int &y)
{
int i = random (h);
x = r[0][i]; y = r[1][i];
r[0][i] = r[0][h]; r[1][i] = r[1][h];
return h--;
}
// View labirint on screen
void view()
{
for (int y=0; y<=size; y++)
for (int x=0; x<=size; x++)
{
gotoxy (x*2+1,y+1);
if (m[y][x]==0) cprintf ("..");
if (m[y][x]==1) cprintf ("ÛÛ");
}
}
int main(void)
{
printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\Labirint generator");
// Clear labirint
for (int c = 0; c < size*size; c++) ((char *)m)[c] = 0;
// Make border
for (int i = 0; i <= size; i++)
{
m[0][i] = 1; m[size][i] = 1;
m[i][0] = 1; m[i][size] = 1;
}
view ();
initrandom();
int startx, starty;
while (getrandom (startx, starty))
{
if (m[starty][startx]==1) continue;
if (random (100) > fullfill) continue;
int sx=0,sy=0;
do
{
sx=random (3)-1;
sy=random (3)-1;
} while (sx==0 && sy==0 || sx!=0 && sy!=0); //sx==0 and sy==0
while (m[starty][startx]==0)
{
if (random (100) > wallshort)
{m[starty][startx] = 1; break;}
m[starty][startx] = 1;
startx +=sx; starty+=sy;
m[starty][startx] = 1;
startx +=sx; starty+=sy;
}
}
view();
return 0;
}
+ Origin: [Team ÑÀÏÐ] (2:462/42)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q8. Àëãîpèòì èçîápàæåíèÿ ëèíèé
A1. (Alexander Kharkovsky 2:4624/8.147)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Hàèáîëåå îáùèé ìåòîä èçîápàæåíèÿ ëèíèé âêëþ÷àåò
--- GoldED+/386 1.1.4.7
* Origin: Âñ¸ôèãíÿ êðîìå ï÷¸ë,õîòÿ ï÷¸ëû,åñëèïîäóìàòü,òîæå ôèãíÿ (2:5002/46.4)
Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû óìåíüøåíèå äàòû òåìà àâòîð
Àðõèâíîå /ru.algorithms/143013e9532bf.html, îöåíêà èç 5, ãîëîñîâ 10
|