Форум программистов, компьютерный форум CyberForum.ru

Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Енот6021
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 8
06.03.2014, 14:52     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. #1
При помощи рекурсии по данному числу n выведите на экран все перестановки чисел от 1 до n в лексикографическом порядке.
Нужен текст программы, пример выполнения, блок схема.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 14:52     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке.
Посмотрите здесь:

Вывести все перестановки в лексиграфическом порядке чисел от 1 до N C++
C++ Вывести на экран в возрастающем порядке все трехзначные числа
C++ Проверить, что все слова заданной строки упорядочены в лексикографическом порядке (как в словаре)
Привести в лексикографическом порядке все r-размещения с повторениями из элементов множества {1,2, ... ,n} и определить их количество C++
Вывести трехзначное число, полученное в результате перестановки чисел в обратном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gunslinger
случайный прохожий
 Аватар для gunslinger
1097 / 715 / 184
Регистрация: 20.07.2013
Сообщений: 1,969
06.03.2014, 15:25     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. #2
Генерация перестановок в лексикографическом порядке
http://algolist.manual.ru/maths/comb...rmutations.php
http://study.sfu-kras.ru/DATA/docs/P...recurs/lex.htm
http://www.life-prog.ru/1_7052_gener...-poryadke.html
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
07.03.2014, 03:55     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. #3
ну во так наверное:
C++
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
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
const int n = 4;
using namespace std;
void lexigraph_comp(char lex[][10], int sz)
{
 
 
    for(int i = 0; i != n-1;i++)
    {
        if(strcmp(lex[i], lex[i+1]) <0)
        {
            swap(lex[i], lex[i+1]);
            for(int j = 0; j!= n; j++)
            cout << lex[j] << " ";
        cout << endl;
        }
 
    }
    if(sz < n -2)
    {
        sz++;
    lexigraph_comp(lex,sz );
    }
 
}
 
int main() {
  int arr[n];
 
  for(int i = 0; i != n; i++)
  {
      arr[i] = (i+1) * 3 ;
      cout << arr[i] << " ";
  }
  char lex[n][10];
  cout << endl;
  for(int i = 0; i != n; i++)
  {
      itoa(arr[i],lex[i], 10);
 
  }
  cout <<endl;
    int sz=0 ;
  lexigraph_comp(lex, sz);
}
но не уверен что именно то что вам нужно, а так программа сортирует лексиграфически в порядке убывания с помощью рекурсии
castorsky
 Аватар для castorsky
1948 / 1038 / 78
Регистрация: 29.11.2013
Сообщений: 3,262
07.03.2014, 04:21     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. #4
C++
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
#include <iostream>
#include <algorithm>
 
int main ()
{
    int n;
 
    std::cout << "Enter n: ";
    std::cin >> n;
 
    int myints[n];
 
    for (int i = 0; i < n; i++)
        myints[i] = i + 1;
 
    std::sort (myints, myints + n);
    std::cout << "The " << n << "! possible permutations with 3 elements:\n";
 
    do {
        for (int i = 0; i < n; i++)
            std::cout << myints[i] << ' ';
        std::cout << '\n';
    } while ( std::next_permutation(myints, myints + n) );
 
    std::cout << "After loop: \n";
    for (int i = 0; i < n; i++)
        std::cout << myints[i] << ' ';
    std::cout << '\n';
 
  return 0;
}
Yandex
Объявления
07.03.2014, 04:21     Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке.
Ответ Создать тему
Опции темы

Текущее время: 08:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru