Spyrytus - kitöltésével algoritmusa a kétdimenziós tömb egy spirál
Algoritmus töltés kétdimenziós tömb egy spirális
Valószínűleg sokan voltak munkaprogramozás órák, írj egy programot, hogy kell kitölteni egy kétdimenziós tömb a számok egy spirál. Nemrég volt azonos kell, hogy megoldja ezt a problémát. Írtam sokszor különböző programozási nyelvek - és minden alkalommal meg kell emlékezni, mint írtam, de most írtam egy algoritmust, mely képes kitölteni minden tömb bármilyen méretű - akár semetrichnye.
Ahhoz, hogy elkezdjük magyarázni a tényleges algoritmus. Amikor kitölti az kétdimenziós tömb egy spirál (töltse ki a bal-jobb, top-down). Amikor kitöltésével a tömb csiga - az iterációk számát minden negyedik légcsatornát egyenlő RazmerMassiva - 2. Most, ezekből az adatokból, és kezdjük.
Először levelet kódrészlet felelős kitöltésével csak a bal-jobb:
ahol y - a jelenlegi párt (0 - felfelé, 1 - jobb 2. -).
sizeX - a méret a tömb vízszintesen
CorrectX - változó, amely felelős az automatikus dekrimentirovanie
Count - változó, amely felelős a jelenlegi belül a tömb számjegyek
Summ - a termék a szélesség és magasság szükséges a hiba kijavítására (lásd alább).
Mas - a név a két dimenziós tömb
X - a tényleges pozíció a tömb
Nos, a másik oldalon az ügy az az elv, a fent leírt, azzal az eltéréssel, hogy a változók cserélni, valamint néhány módosított állapotban. Ha azt veszi észre, azt írták, hogy a változó Summ. meg kell szüntetni a hibákat - igen, ez az. A hiba abban rejlik, hogy az elmúlt ciklusban az első feltétel (lásd a kód.) - működik, és a változás nem sikerül, mert be kell vezetni egy újabb változót.
Az alábbiakban egy olyan funkció, kód, amely kitölti a tömb egy spirál. Kitöltése történik csak egy irányba - a bal-jobb, top-to-bottom. Nos, aki azt akarja, hogy - átírhatja ee úgy, hogy elkezdett bárhonnan. Sok szerencsét.
Ready változata a program megtalálható linkre kattintva a navigációs sáv, Ready programokat.