Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Заполнить массив по данному числу


Автор: Лесс 15.12.2012, 17:09
Дано число N, его нужно "распределить" по одномерному массиву m. При этом сумма всех элементов должна равняться N. Заполнение идёт от начала массива, "дальние" элементы могут быть равны нулю, однажды заполненные - не меньще единицы. К примеру, N=3, длина массива - 4. Вот как будет выглядеть массив поэтапно:
3000
2100
1200
1110
В этом случае последний элемент = 0, пример "0111" не допустим. Заполнение итеративно, с помощью функции либо процедуры

От себя - смог заполнить только первые два эл. далье застрял

Автор: Lipetsk 15.12.2012, 18:08
можно так
делаем цикл по k от 1 до min(N,длина массива) это перебираем количество не нулевых ячеек
так как k ячеек не пусто, то остается распределить по k местам N-k элементов

Автор: volatile 16.12.2012, 01:12
Код
n = 3
m = 4

while m :
   t = (n - 1) / m + 1
   n -= t; m -= 1
   print t,


http://codepad.org/0lvxGhkn
это Python, если что.

По специальному, личному обращению, сию грандиозную программулину, готов перевести еще на С/С++ .
(на паскаль, сразу говорю, не готов)


Автор: Silent 17.12.2012, 07:42
Окулов С.М., Программирование в алгоритмах, страницы 53-58, исходные коды (паскаль-делфи), пояснения и объяснения, рекомендую

Автор: volatile 18.12.2012, 00:59
А в ответ тишина...
Ни ответа, ни привета. Подошло не подошло?

однопостники припарили

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)