Помощь - Поиск - Пользователи - Календарь
Полная версия: Заполнение двумерного статического массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
4итер
Создать двумерный статический массив 20*20. Его необходимо заполнить как шахматную доску.
Не знаю как реализовать заполнение, т.е. чтобы белые цвета были "1", а черные "0".
APAL
Подозреваю, что если исследовать сумму индексов элемента массива на четность/нечетность, то можно заполнить массив.
Ромаха
APAL, хорошая идея smile.gif

Но представим что нам надо заполнить N*N клеток. (где N <= 1 000 000) Тогда мы должны будем проверить каждую клетку, что, возможно, не будет являться самым эффективным алгоритмом. Поэтому можно учитывать координаты только I-того, 1-го элемента матрицы. И в соответствии с ним заполнять остальные элементы строки.
APAL
Цитата(Ромаха @ 30.05.2013 12:32) *

Но представим что нам надо заполнить N*N клеток. (где N <= 1 000 000) Тогда мы должны будем проверить каждую клетку, что, возможно, не будет являться самым эффективным алгоритмом. Поэтому можно учитывать координаты только I-того, 1-го элемента матрицы. И в соответствии с ним заполнять остальные элементы строки.


Хорошо, расширим задачу до N... т.е. попытаемся уйти от сложения больших чисел:
Используем рекурсию!

Код (Показать/Скрыть)

APAL
Кстати, если все таки подходить к решению именно как к шахматной доске (или хотя бы чтобы количество строк/столбцов было четным), то не обязательно перебирать в цикле весь массив:

 For i:=1 to N div 2 do
For j:=1 to N do
If odd(j) then m[i*2-1,j]:=1
else m[i*2,j]:=1;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.