комбинаторика

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
orynkanov
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.11.2007 (Пт) 16:15
Откуда: Казахстан, Алматы

комбинаторика

Сообщение orynkanov » 02.11.2007 (Пт) 16:40

Здравствуйте!
Необходимо решить такую задачу:
есть 5 клеток из которых 3 могут быть закрашены. Необходимо найти все комбинации, как могут быть закрашены клетки. Помогите пожалуйста.
Цой навсегда...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 02.11.2007 (Пт) 18:29

Код: Выделить всё
    Dim A, B, C As Integer
    Dim S As String = ""

    For A = 1 To 3
      For B = A + 1 To 4
        For C = B + 1 To 5
          S = S & CStr(A) & "," & CStr(B) & "," & CStr(C) & vbCrLf
        Next
      Next
    Next
    MsgBox(S)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

orynkanov
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.11.2007 (Пт) 16:15
Откуда: Казахстан, Алматы

большое спасибо! и ещё одна просьба...

Сообщение orynkanov » 02.11.2007 (Пт) 20:43

вывел закономерность из примера и написал код из него, ориентируясь от частного к общему. но есть одно НО - процесс будет выполняться как минимум дня 3... как сделать паузу и возобновление цикла или сохранение, выключение и возобновление работы программы после выключения? и вопрос №2 - всё это рекурсией будет работать быстрее или так же?
заранее благодарю
Цой навсегда...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 02.11.2007 (Пт) 21:22

Приведённый код за доли секунды выполняется, если же решается другая задача, то приведите условия. А рекурсией медленней будет.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 02.11.2007 (Пт) 21:25

Биномиальный коэффициент
Твое число это
|3|
|5|
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

orynkanov
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.11.2007 (Пт) 16:15
Откуда: Казахстан, Алматы

пояснение

Сообщение orynkanov » 02.11.2007 (Пт) 21:42

это я для примера написал, что количество клеток -5, а закрашенных - 3. на самом деле "немножко" больше - 70 / 12 соответственно. поэтому-то процесс будет идти наверное неделю... вот я и хочу сделать сей процесс прерываемым и распределённым, благо есть компьютерные ресурсы.
Цой навсегда...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.11.2007 (Сб) 14:25

orynkanov
70 и 12 ...
ну неделя это конечно круто .... :) если у тебя несколько машин .... разбей задачу на поддиапазоны ... считать будт СВЕРХ долго если ты сделаешь например так...

Код: Выделить всё
ST = ""
For I = 1 to 1000000
  ST = ST + "0"
Next I


в разы сократишь время, если возмешь временный буффер длиной ну например 10к.

Код: Выделить всё
ST = ""
For I = 1 to 100
  tmpST = ""
  for J = 1 to 10000
    ST = ST + "0"
  Next J
  ST = ST + tmpST
  'или тут слив в файлик
Next I


и будешь его наполнять, а по заполнению сливать в общий буффер.

П.С.: Я бы конечно сразу в файлик бы писал значения временного буффера (при этом указывая место до которого досчитал ... как "точка восстановления" если у тебя софт свалится)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.11.2007 (Сб) 16:31

Странная какая-то задача.
Для чего может потребоваться список всех возможных комбинаций? Разве что от нечего делать.
Обычно же требуется количество возможных комбинаций (эта формула уже давалась) и проверка, является ли проверяемая комбинация валидной.
Lasciate ogni speranza, voi ch'entrate.

orynkanov
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.11.2007 (Пт) 16:15
Откуда: Казахстан, Алматы

пояснение

Сообщение orynkanov » 03.11.2007 (Сб) 20:22

хочу немножко заработать денежек просто. нашел в одном коммерческом проекте "дыру" и решил воспользоваться. защиту сделали грамотную, но уязвимость, как я думаю, осталась. как написано на баннере сверху - "получи её первым, побеждай в любом поединке" :D... да и ради спортивного интереса хочется знать, получится ли это сделать...
Цой навсегда...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 42

    TopList