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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 20:51   #1
Besidnuk
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 17
По умолчанию Троичный перебор

Подскажите пожалуйста алгоритм троечного перебора, ну например при значении N=2 будет 9 случаев:
00
11
22
01
02
10
20
12
21
Для двоичного перебора алгоритм знаю, а нужно для троечного.
Besidnuk вне форума Ответить с цитированием
Старый 26.02.2011, 21:38   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Besidnuk Посмотреть сообщение
Для двоичного перебора алгоритм знаю, а нужно для троечного.
Да оно, ежели рекурсией пользоваться, то всё равно - двоичный, троичный, десятичный...
Почти алгоритм:
Код:
#!/usr/bin/python
# -*- coding: cp1251 -*-
from numpy import array, zeros

N = 2
N_BASE = 3
x = zeros( N, dtype=int )

def NextXk( k ):
    if k == -1:
        return

    x[k] += 1
    if x[k] < N_BASE:
        print x
        NextXk( N-1 )
    else:
        for j in range( k, N ):
            x[j] = 0
        NextXk( k-1 )

def main():
    print x
    NextXk( N-1 )

main()

#
Vago вне форума Ответить с цитированием
Старый 28.02.2011, 10:43   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

у тебя, правда, размещение, а у меня сочетаниt элементов множества, но всё равно глянь, вдруг подойдёт, ну возможно и адаптировать http://programmersforum.ru/showthread.php?t=138096
phomm вне форума Ответить с цитированием
Старый 28.02.2011, 11:35   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) количество таких вариантов для N можно элементарно вычислить: основание системы счисления в степени N
3^2 = 9

2) перебор можно сделать так, как предложил Vago (через рекурсию).
а можно банально перебирать значения в цикле, переводя каждое число в троичную (или любую нужную) систему счисления:
Код:
for i:=0 to 9-1 do
  Writeln(DecToThree(i));
осталось вставить функцию перевода в троичную систему и задача полностью решена.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов. Vaigard Общие вопросы Delphi 9 03.01.2011 13:09
Задача (перебор) Aerowalk Помощь студентам 2 22.11.2010 19:28
перебор в с++ Girl/C++ Общие вопросы C/C++ 3 04.10.2010 09:50
Перебор с памятью artemavd Общие вопросы Delphi 12 24.05.2009 06:48
перебор файлов Ralf_ru Общие вопросы Delphi 11 31.03.2009 14:23