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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 16:33   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Последовательность чисел без повторений

Здравствуйте. Мне нужно сформировать последовательности,состоящие из нулей и единиц.Последовательности не должны повторяться. Подскажите алгоритм,как лучше реализовать это. Думала так: первую последовательность вводит пользователь, потом последовательность разбивается на цифры и идет обмен между парами цифр последовательности.
Вероника99 вне форума Ответить с цитированием
Старый 27.05.2015, 16:41   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Рекурсия в помощь.
Описываем процедурку P(k : Integer). Есть еще глобальный массив. Что там изначально - пофигу.
Говорим так, пусть P(k) ставит на k-ую позицию все возможные числа (в нашем случае 1 и 0), а затем вызывает саму себя с параметром k+1

А еще можно сделать это очень красиво.
Пусть последовательность должна состоять из N символов. Тогда мы запускаем цикл for i := 0 to 2^(n+1)-1 do и на каждой его итерации выводим двоичное представление числа i (не забывая добивать его лидирующими нулями)
Poma][a вне форума Ответить с цитированием
Старый 27.05.2015, 16:51   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от 'Poma
[a;1504398'А еще можно сделать это очень красиво.
тоже пришла эта же идея в голову.
по сути нужно перебрать все числа и для каждого вывести его двоичное представление. И всё, никакой рекурсии, всё просто, быстро и красиво!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.05.2015, 16:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А ни чего, что соседние последовательности будут очень сильно похожи друг на дружку? Я бы в цикле рандомно заполнял нулем и единицей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.05.2015, 17:03   #5
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А ни чего, что соседние последовательности будут очень сильно похожи друг на дружку? Я бы в цикле рандомно заполнял нулем и единицей
Я думала про такой рандом,но не знаю вообще как реализовать рандом состоящий из 1 и 0.
Вероника99 вне форума Ответить с цитированием
Старый 27.05.2015, 17:05   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А ни чего, что соседние последовательности будут очень сильно похожи друг на дружку?
Хм.. Я дык понял, что нужно перебрать все последовательности
Чтобы не были похожи, можно бахнуть рекурсию, но ставить рандомно (потом будет инверсия). Правда похожи все равно будут.. Но уже не так сильно
Poma][a вне форума Ответить с цитированием
Старый 27.05.2015, 17:11   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Решение найдено!
Код:
const len=10;

function Randoms:string;
var i:byte;
begin
   Result:='';
   For i:=1 to len do
      If Random(2)=0 then
         Result:=Result+'0' else
         Result:=Result+'1';
end;

var p:array[1..12] of string;
    i,k:byte;
begin
   Randomize;
   i:=0;
   Repeat
      i:=i+1;
      p[i]:=Randoms;
      For k:=1 to i-1 do
         If p[i]=p[k] then
         begin
            i:=i-1;
            Break;
         end;
   Until i=12;
   For k:=1 to 12 do
      Writeln(p[k]);
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел maksim97maksim Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2014 13:59
Задана последовательность из n вещественных чисел. Определить количество чисел, попадающих в заданный интервал. без массивов. Квитокс Помощь студентам 5 05.12.2013 15:05
Даны цифры от 1 до 38 нужно составить все возможные комбинации из 6 чисел без повторений. gector Фриланс 14 01.04.2013 20:20
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках 'studentka' Помощь студентам 6 30.11.2011 18:35
Random вывод нескольких чисел без повторений leonw Общие вопросы Delphi 4 05.09.2009 13:15