Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 12.08.2014
Сообщений: 59

Перебрать все возможные комбинации заданных символов

20.08.2014, 11:24. Показов 4415. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно программа, которая перебирает все возможные комбинации заданных символов,
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2014, 11:24
Ответы с готовыми решениями:

Сгенерировать все возможные комбинации цифр
Здравствуйте! Подскажите, как сгенерировать все возможные комбинации типа 0-4 - возможные числа между которыми стоит знак нижнего...

Вычислить все возможные комбинации символов
Нужно вычислить на паскале все возможные комбиации из пяти четырёхзначных символов без повторений. например 5а2и а77ц пи4а 7е3а 96ф3; ...

Перебрать все комбинации цифр
Люди помогите как перебрать все комбинации цифр на с++ или Паскаль. Например дано 1 2 3 4 прог будет перебрать 1 2 4 3; 1 3 2 4; 1 3 4...

2
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.08.2014, 11:49
Лучший ответ Сообщение было отмечено Ринат1999 как решение

Решение

Пример.
Pascal
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
{ ãåíåðàöèÿ ïåðåñòàíîâîê }
uses crt;
const n = 4; { êîëè÷åñòâî ýëåìåíòîâ â ïåðåñòàíîâêå}
var a:array[1..n] of integer;{èíäåêñû ñèìâîëîâ}
    b:array [1..n] of char; {çàäàííâå ñèìâîëû}
procedure generate (l,r:integer);
var i,v,k:integer;
begin
k:=0;
if (l=r) then
 begin
  for i:=1 to n do write(b[a[i]],' ');
  writeln;
  k:=k+1;
  if k mod 22=0 then
   begin
    write('Press enter');
    readln
   end
 end
else
 begin
  for i :=l to r do
   begin
    v:=a[l]; a[l]:=a[i]; a[i]:=v; {îáìåí a[i],a[l]}
    generate(l+1,r); {âûçîâ íîâîé ãåíåðàöèè}
    v:=a[l]; a[l]:=a[i]; a[i]:=v; {îáìåí a[i],a[l]}
   end;
 end;
end;
 
var j:integer;
begin
randomize;
for j:=1 to n do
 begin
  b[j]:=chr(j+64); {çàäàåì íàïðèìåð ïðîïèñíâå ëàòèíñêèå áóêâû}
  a[j]:=j;
 end;
generate(1,n);
end.
0
13 / 12 / 5
Регистрация: 16.08.2014
Сообщений: 150
20.08.2014, 12:04
Вот еще вариант(написал APALoff):
Pascal
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
{ Алгоритм Нарайаны — нерекурсивный алгоритм, генерирующий по данной
 перестановке следующую за ней перестановку (в лексикографическом порядке).
 Придуман индийским математиком Пандитом Нарайаной в XIV веке. 
 
Каждая следующая перестановка строится следующим образом:
 
    На первом шаге программы, двигаясь с конца массива, сравниваем соседние
    элементы, если предыдущий (по расположению в массиве) элемент больше
    следующего, двигаемся дальше, если меньше, останавливаемся и запоминаем
    его номер (m), этот элемент будет изменен (на этом шаге он отмечается
    красным треугольником снизу, а потом просто красным цветом).
    
    Элементы, стоящие слева от m-го, не изменяем (они станут окрашенными
    в серый цвет). Среди элементов, стоящих справа, нужно выбрать элемент (k),
    который должен встать на место m-го. Это минимальный элемент среди тех,
    которые больше m-го (отмечается синим треугольником, потом просто
    синим цветом).
    
    Меняем m-ый и k-ый элементы.
    Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го
    элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть. }
    
Var RS : String;
 
Function StRevers(St :String) : String;
Var
  ii  : Longint;
  St0 : String;
Begin
  St0:='';
 For ii:=length(St) downto 1 do
  St0:=St0+St[ii];
  StRevers:=St0;
end;
 
Function LexNext(S : String) : String;
Var
  len,m,k,t : Longint;
  Sch       : Char;
  cs        : String;
  flag      : Boolean;
Begin
  len:=Length(S); flag:=True;
  For m:=len-1 downto 1 do
    If S[m]<S[m+1] then Break;
  For k:=len downto m+1 do
    If S[k]>S[m] then
    Begin
      flag:=False;
      Break;
    end;
  If flag then LexNext:='' else
  Begin
    For t:=len downto m+1 do
      If (S[t]>S[m]) and (S[t]<=S[k]) then k:=t;
    cs:=S;
    Sch:=cs[m];
    cs[m]:=cs[k];
    cs[k]:=Sch;
    LexNext:=Copy(cs,1,m)+StRevers(Copy(cs,m+1,len-m));
  end;
end;
 
Begin
  RS:='abcd';
  While RS<>'' do
  Begin
    Writeln(RS);
    RS:=LexNext(RS);
  end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2014, 12:04
Помогаю со студенческими работами здесь

Все возможные комбинации
Заданы два числа a, b (записаны в одной строке). Где 1&lt;=a&lt;=1032, 1&lt;=b&lt;=1050 Нужно получить все возможные комбинации цифр числа b, и...

Определить все возможные комбинации кода
Код содержит буквы a,b,d,e,z,i,o,c,t. Код состоит из 4 букв: 1 буква - гласная, 2 буква - b, 3 буква - согласная, 4 буква - любая гласная...

Все возможные комбинации из 8 белых и 8 черных шаров
нужна программа выводящая все комбинации в формате 4*4 помогите пожалуйста

Найти все возможные комбинации шестнадцатизначного числа
не знаю как сделать программу которая найдёт все числа от 0000000000000000 до 9999999999999999 помогите пожалуйста

Нужно составить все возможные комбинации цифр
Помогите пожалуйста написать прогу.По типо вот этого: НО чтобы не было повторов,таких как: 1 2 3 4 5 6 1 1 2 3 4 5 1 1 1 2 3 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru