Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Icakis avatar Icakis 15 Точки

[Homework] C# Basics - Loops - SpiralMatrix** - Only with Loops

Здравейте колеги, реших задачата по по-лесния начин - с масив, но Наков беше споменал на лекция,
че има възможност да се реши само с цикли. Вярно, отне ми половин ден, но беше още един добър начин да си потренирам мозъка.
Накратко да разясня решението, защото не става много ясно от толкова много променливи. Разделяме
матрицата на 4 парчетата м/у двата диагонала. Като се има предвид, че първото число винаги е 1,
можем да намерим стойността на всяко число по левият диагонал на матрицата (до средата): 4*(n-
2*к)-4, където n е големината на матрицата, а k е минималният брой вложени цикли (0 <= 2*k <= (n+1)/2). Ето един пример за матрица с 5 елемента:

1  2  3  4  5
 16  17  18  19  6
 15  24  25  20  7
 14  23  22  21  8
 13  12  11  10  9

                                              1
1 --> 4*(5-2*0)-4 = 16 |+ 1 = 17
17--> 4*(5-2*1)-4 = 8 |+17 = 25

След като съм намерил началните числа, обхождам матрицата от вън навътре само по краищата, за да
намеря числото за отпечатване спрямо индексите на матрицата. Като с 4 if-а проверявам дали е горен,
долен ред или лява, или дясна колона:

 0  0  0  0  0
 3  0  0  0  1
 3  3  0  1  1
 3  3  2  2  1
 3  2  2  2  2

SpiralMatrix**

Дано съм заинтригувал някого ...

15
Programming Basics 15/12/2014 19:15:59
Nadia.Hristova avatar Nadia.Hristova 41 Точки

Страхотно решение :)

Аз пък се изхитрих и направих един далеч по-тривиален и не толкова интересен код само с loops (тук).

Просто следвах развиването на матрицата по конзолата, като местих курсора с/о положението на числото в нея :P.

 

1
15/12/2014 19:30:14
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.