Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Как мне получить массив комбинаций с семью цифрами из 70? Пример (4 из 6): 123456 1234 1235 1236 1245 1246 1256 1345 1346 1356 1456 2345 2346 2356 2456 3456 Рекурсией лучше всего бы наверное... Есть у кого-нибудь может уже готовые проекты? p i l l s b u r y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 13:58 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Ну вот, навскидку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 14:10 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Спасибо! Работает, но с одним " но ". Если даю задачу перебрать 7 из 70 , то вариантов 'N' выходит миллиард с "небольшим". И массив басик не даёт с таким размером: ReDim rez(1 To BallsNumber, 1 To N) - ошибка вылетает, где 'N' больше миллиарда . :) Можно что-то сделать? И в каких рамках такие ограничения? Спасибки. p i l l s b u r y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 21:24 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Перебор - это принципиально неверный путь. Нужно открыть учебник по комбинаторике и найти соответствующую формулу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2004, 08:05 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
ограничения самые естественные - вин32 процесс не может адресовать более 4 гигабайт виртуальной памяти. в твоем случае: число комбинаций - 1 198 774 720 длина целевого массива в байтах - 7*2*1198774720= 16 782 846 080 (то есть больше 15 гигабайт, если я считать не разучился окончательно ) что делать - пожалуй, функцию (в классе) делать, которая по индексу (номеру получившейся комбинации) вычисляет и возвращает комбинацию. В такой класс можно итератор добавить, который будет GetNextCombination возвращать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2004, 17:33 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
M!/((M-N)!N!) , где M - большее из чисел, а N - меньшее Только не забудьте формулу сократить. У нас на одном чемпе была похожая задача - в итоге те кто сокращали - решили, те кто не сокращали - получили переполнение на подном из тестов. SHOGAL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2004, 17:23 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
ШогалM!/((M-N)!N!) , где M - большее из чисел, а N - меньшее Только не забудьте формулу сократить так в моем примере функция Public Function MeFaktorial(N As Integer, m As Integer) As Long и есть результат сокращения. :-) По поводу вычисления - хорошая мысль автору вопроса. И переделать данную функцию наверное нетрудно будет но это уже для домашнего задания :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2004, 10:32 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Так в том то и дело, что проблема не в вычислении количества комбинаций, а в резервировании массива на это ужасно огромное количество комбинаций. Вот... p i l l s b u r y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2004, 21:04 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Ну так создай столько массивов , сколько нужно и заполняй их по очереди.В чем проблема ? P.S C Миф'аль ha Паис в азартные игры играешь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2004, 22:15 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Что-то вроде... Хочу доказать себе, что с ними не поиграешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2004, 22:25 |
|
||
|
Комбинации
|
|||
|---|---|---|---|
|
#18+
Вот есть функция, правда на яве, которая первоначально берет отсортированный массив с буквами или цифрами. Каждый раз когда вызывается эта функция, она выдает следующую комбинацию элементов в массиве (меняя что-то в нем местами). Никакой рекурсии. И возвращает правду если есть еще комбинации, или неправду если комбинации кончились. Когда комбинации кончаются, то функция сортирует массив, приводя его в первоначальный порядок. Это то что ты хотел? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Спасибо, Саня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 01:04 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2169301]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 392ms |

| 0 / 0 |
