Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2013, 03:52   #1
Honr
Новичок
Джуниор
 
Регистрация: 14.07.2013
Сообщений: 2
По умолчанию Равномерное распределение (алгоритм)

Добрый день сообщества,

Поставлена задача на равномерное распределение количества каких-либо единиц предметов по контейнерам. Например, шарики и корзины переменные величины. Допустим дано 7 шариков и 4 корзины. Нужно распределить равномерно или приблизительно равномерно по 4 корзинам.
2-2-2-1 или 1-2-2-2. Подскажите пожалуйста алгоритм (кодом и интересно увидеть математическую интерпретацию) И какая мат. область это изучает, и где можно еще посмотреть подобного рода задачи. Буду признателен за любую помощь.
Honr вне форума Ответить с цитированием
Старый 14.07.2013, 10:31   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ну пусть у вас N предметом и M корзин. Тогда введем число X = N div M.
Заполним массив числом X. (for i := 1 to n do a[i] := x)
Т.к. мы использовали деление на цело, то (возможно) что-то осталось. Поэтому :
Код:
X := X * M;
i := M; // (или 1)

while x < m do begin
    Inc (x);
    Inc (a[i]);
    Dec (i) // или же Inc (i)
end;
Теперь выводим массив и радуемся..
Poma][a вне форума Ответить с цитированием
Старый 14.07.2013, 15:44   #3
Honr
Новичок
Джуниор
 
Регистрация: 14.07.2013
Сообщений: 2
По умолчанию

Спасибо за решение, но у меня что-то не складывается, подставляю туда например данные N-7, M-4 и допустим уже условие цикла не выполняется, хотя остаток есть.
Honr вне форума Ответить с цитированием
Старый 14.07.2013, 15:48   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Да-да-да! Это я опечатолся! Каюсь. Виновен. Прошу простить.
В цикле должно быть
Код:
while x < N do begin
Poma][a вне форума Ответить с цитированием
Старый 14.07.2013, 16:19   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ещё как вариант
Код:
  x := N div M;
  y := N mod M
  for i := 1 to y do write(x+1, '  ');
  for i :=y +1 to m do write(x, '  ');
m-корзины, n-предметы
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Равномерное увеличение значения ячейки Kvint_Sertoriy Microsoft Office Excel 6 13.10.2012 14:06
Гауссовское распределение vadimozzz Общие вопросы Delphi 4 16.05.2010 22:30
Сложение объектов и равномерное распределение их последовательности Tarkh PHP 1 23.12.2009 20:16