Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнения при переборе 
V
    Опции темы
PascalC
Дата 19.10.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Здравствуйте!
Как организовать алгоритм перебора при неизвестном заранее количестве условий?
Пример:
1) Нужно выписать все последовательности чисел от 1 до N длинной M порядок не важен (т.е. 1,2,3 и2,3,1 -одна и та же последовательность)
2) Найти такие последовательности, которые содержат два определенных числа (x,y)
Для частного случая все понятно, например, N=5 M=3 последовательности такие:

1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
2 3 4
2 3 5
2 4 5
3 4 5

как их получить для частного случая M и N понятно - делаем 3 вложенных цикла
Код

for i:=1 to 5 do
 for j:=i to 5 do
  for k:=1 to 5 do
   if ((i=x) and (j=y)) or ((j=x) and (i=y)) or ((k=x) and (j=y)) or ((j=x) and (k=y)) or ((i=x) and (k=y)) or ((k=x) and (i=y)) then find=true;

Как сделать тоже самое для любых значений M и N?
Особенно интересует, как делать сравнения, ведь с увеличением М число сравнений будет все больше и больше.
Понимаю, что должно быть несложно, но не соображу :(

Это сообщение отредактировал(а) PascalC - 19.10.2008, 18:19
PM MAIL   Вверх
PascalC
Дата 19.10.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Ребят, подскажите хоть куда копать?
PM MAIL   Вверх
Hades
Дата 19.10.2008, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 8.8.2008

Репутация: нет
Всего: 37



Цитата(PascalC @  19.10.2008,  20:45 Найти цитируемый пост)
 подскажите хоть куда копать?

Hапечатать все перестановки чисел 1..N + google
PM MAIL   Вверх
PascalC
Дата 19.10.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Цитата(Hades @  19.10.2008,  21:25 Найти цитируемый пост)
Hапечатать все перестановки чисел 1..N + google 

Спасибо, алгоритм немного не тот, этот сайт несколько раз попадался, но не знал, как под свою задачу переделать, чтоб выполнялись проверки.
Сейчас подумал, разбил задачу на 3 части
1) Вывод неповторяющегося перебора
2) Вывод с разными значениями
3) Вывод с проверкой
А дальше все оказалось не так уж и сложно, код переделал, если кому пригодится, вот мой код:

    
Код

var M,N:byte;
          posl:array [0..255] of byte;
          isx,isy:boolean;
        x,y:integer;
      procedure Generate(k:byte);
        var i,j:byte;
      begin
        if k=m then
          begin
        isx:=false; isy:=false;
        for i:=1 to m do
        begin
        if posl[i]=x then isx:=true;
        if posl[i]=y then isy:=true;
        write(posl[i]);
        end;
        if isx and isy then write(' -Решение');
        writeln;
        end else
          for j:=posl[k]+1 to n do
              begin
          posl[k+1]:=j;
          Generate(k+1);
          end;
      end;
begin
    x:=2;y:=5;
    m:=3;
    n:=5;
    Generate(0);
end.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.