|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.05.2013, 16:48 | #11 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,356
|
Первое - количество всех комбинаций N!/(M! * (N - M)!) (число сочетаний из N по M).
В Вашем случае 52!/(13! * 39!) = 635013559600 комбинаций (влезает только в int64, если рассматривать целые типы). UPD Зафиксируем группу из L (четырех) шаров. Эта группа может располагаться на N возможных местах. При этом, для расстановки оставшихся M-L шаров осталось N-L-2 ячеек. То есть, количество комбинаций равно N*(число сочетаний из N-L-2 по M-L, исключая рядом находящиеся L). Осталось придумать, как исключить из количества сочетаний рядом находящиеся L. UPD2 Вырисовывается рекуррентная задача: Нужно посчитать количество всех комбинаций и вычесть из них количество комбинаций, где есть подряд идущие L шаров. В рассуждениях выше возможны ошибки Дописываю при появлении мыслей
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 11.05.2013 в 17:52. |
11.05.2013, 16:52 | #12 |
Пользователь
Регистрация: 11.05.2013
Сообщений: 38
|
Почему отладчик выдает ошибки при типе int64 ? Спасибо
Нужно будет изменять алгоритм цикла в программе? Спасибо Методом рекурентных отношений я схожие задачи решал, эту не получаеться. Последний раз редактировалось Stilet; 11.05.2013 в 17:49. |
11.05.2013, 17:44 | #13 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,356
|
По ходу раздумий возник вопрос:
Если в ячейках подряд расположены более чем 4 красных шара, то это считается событием? И если это рассматривать как событие, то сколько раз его считать? Например: 1110 - нужно событие 2 единички подряд, считать как 2 события или как одно, и считать ли событием вообще
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
11.05.2013, 17:53 | #14 |
Пользователь
Регистрация: 11.05.2013
Сообщений: 38
|
Может быть проблема в том что не получается задать нужный тип вместо integer, так как когда я задавал м=12 то есть количество искомых комбинаций было меньше, ошибки не было. Или попробовать Турбо Паскаль? Спасибо
|
11.05.2013, 17:56 | #15 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
11.05.2013, 18:14 | #16 |
Пользователь
Регистрация: 11.05.2013
Сообщений: 38
|
Если в ячейках подряд расположены более чем 4 красных шара, то это считается событием? И если это рассматривать как событие, то сколько раз его считать?
Именно по этой причине я не мог составить математическую формулу, не знал какое колличество комбинаций необходимо исключить. Если даже 2 или 3 раза за один расклад всех шаров, появляется комбинация из 4 красных шаров это считаеться одним событием, математическая формула которую я составил считала это разными событиями и в этом была ошибка. Если не 4 а 5 красных шарв выполо подряд это считаеться не 2 а 1 событием. Я думаю програмным методом эту задачу решить немного легче чем искать математическую формулу, но нужен безошибочный алгоритм. Спасибо Потому что ты мои посты не читаешь ) Читаю, но мне не всегда хватает подготовки и знаний что бы понять. Спосибо Последний раз редактировалось Stilet; 11.05.2013 в 18:53. |
11.05.2013, 18:52 | #17 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
Если посмотреть на эту часть кода,
Код:
в теле цикла Код:
a[i] <> n-m+i и оператор dec(i) не выполняется. Обратите внимание, что -m+i - дает, в этом коде, всегда ноль. На следующей итерации значение i восстанавливается. Выполняется операция inc(a[i]); Это и приводит к переполнению элемента a[i]. Тут проблема в алгоритме. Как-то так ...
Как-то так, ...
|
11.05.2013, 19:00 | #18 |
Пользователь
Регистрация: 11.05.2013
Сообщений: 38
|
Тогда почему когда я задаю М меньше 12 ошибки нет?
Спасибо |
11.05.2013, 22:43 | #19 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
А какое значение у n?
Сделайте так: 1. Наведите курсор на интересующую Вас переменную и нажмите Ctrl+F7 Тогда можно пронаблюдать эволюцию переменных. 2. Для того, что бы окно Watches было видно в процессе отладки: Window - Cascade. 3. Жмите F8 и отслеживайте по шагам. Кстати, у меня n = 4, а m = 7. А какие значения допустимы? Цитата:
Как-то так ...
Как-то так, ...
|
|
12.05.2013, 09:17 | #20 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Ввел Int64, компилируется.. Код:
Последний раз редактировалось Poma][a; 12.05.2013 в 09:25. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исправить ошибку арифметического переполнения в алгоритме. | DarkDen | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 11.05.2013 13:16 |
как исправить ошибку? | phasha | Помощь студентам | 0 | 11.01.2012 21:32 |
как исправить ошибку? | aiktz | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 24.09.2009 18:56 |
прога на Паскале помогите исправить ошибку:( | Jeksik | Помощь студентам | 4 | 14.10.2008 18:21 |