Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 1
Регистрация: 14.07.2012
Сообщений: 212
1

Поиск всех перестановок (комбинаций) (Исправить программу)

09.11.2014, 17:33. Показов 908. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал программу для поиска всех перестановок (должна искать следующую по алфавиту), но она почему то работает не правильно.
Например для N = 3 выводит

123
132
213
312

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
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
 
using namespace std;
 
int main()
{
    int t = 0, f = 0, N = 0;
 
    setlocale(0, "rus");
    cout << "Программа поиска перестановок" << endl << endl;
    while (N <= 0)
    {
        cout << "Введите число элементов перестановки: ";
        cin >> N;
    }
    cout << endl;
 
    int *arr = new int[N];
 
    for (int i = 0; i < N; i++)
    {
        arr[i] = i + 1;
        cout << arr[i];
    }
 
    cout << endl;
 
    for (int i = N - 1; i > 0; i--)
    {
        if (arr[i] > arr[i - 1])
        {
            t = i;
            for (int j = i; j < N; j++)
            {
                if (arr[j] > arr[i-1] && arr[j] <= arr[t])
                { t = j; }
            }
            swap(arr[t], arr[i - 1]);
 
            for (int j = 0; j < (N - i)/2; j++)
            {
                swap(arr[i+j], arr[N - j - 1]);
            }       
 
            i = N - 1;
            for (int j = 0; j < N; j++)
            { cout << arr[j]; }
            cout << endl;
        }
    }
 
    for (int i = N - 1; i >= 0; i--)
    { cout << arr[i]; }
 
    delete[] arr;
    cout << endl << endl;
    system("pause");
    return 0;
}
Добавлено через 40 минут
Я понял, надо было написать не "i = N - 1;", а "i = N;"
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
49
50
51
52
53
54
55
#include <iostream>
 
using namespace std;
 
int main()
{
    int t = 0, f = 0, N = 0;
 
    setlocale(0, "rus");
    cout << "Программа поиска перестановок" << endl << endl;
    while (N <= 0)
    {
        cout << "Введите число элементов перестановки (больше 0): ";
        cin >> N;
        if (N <= 0) { cout << "Ошибка!" << endl; }
    }
    cout << endl;
 
    int *arr = new int[N];
 
    for (int i = 0; i < N; i++)
    {
        arr[i] = i + 1;
        cout << arr[i];
    }
 
    cout << endl;
 
    for (int i = N - 1; i > 0; i--)
    {
        if (arr[i - 1] < arr[i])
        {
            t = i;
            for (int j = i; j < N; j++)
            {
                if (arr[j] > arr[i-1] && arr[j] <= arr[t])
                { t = j; }
            }
            swap(arr[t], arr[i - 1]);
 
            for (int j = 0; j < (N - i)/2; j++)
            { swap(arr[i+j], arr[N - j - 1]); }     
 
            i = N;
            for (int j = 0; j < N; j++)
            { cout << arr[j]; }
            cout << endl;
        }
    }
 
    delete[] arr;
    cout << endl << endl;
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 17:33
Ответы с готовыми решениями:

Выборка подмножества комбинаций без повторов из множества всех комбинаций перестановок
Собственно вопрос. Существует ли алгоритм нахождения без перебора уникальных комбинаций в...

Поиск в таблице всех комбинаций всех совпадений
Привет всем на форуме! Нужна ваша помощь в составлении запроса. Есть таблица 'Table' (Для...

Поиск всех перестановок символов из строки (0..9)..пожалуйста помогите!!!
ведь наверняка ктото уже писал такие алгоритмы будь то на олимпеаде или где ещё!!!..... мне в...

Генерация всех перестановок n-элементного множества за минимальное количество перестановок (Алгол60 -> Дельфи)
Искал по книгам код для данной задачи: Разработать алгоритм генерации всех перестановок...

0
09.11.2014, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2014, 17:33
Помогаю со студенческими работами здесь

Нужно написать программу для вывода всех комбинаций
Цифры 0, 1, 2, 3, 4, 5, 6, 7, 8! Мне нужно, чтобы программа выводила все комбинации этих чисел...

Можно ли создать программу для перебора всех возможных комбинаций цифр заданного большого числа?
Здравствуйте. Я хочу узнать можно ли сделать программу для перебора всех возможных комбинаций из 30...

Перебор всевозможных комбинаций символов строки, исправить код
Увидел код с подбором цифр... решил буквы добавить, но вышла ошибка... Пожалуйста, скажите как...

Перебор всех комбинаций
Нужно перебрать все комбинации символов(чисел) например Есть массив M = {1 , 2 , 3} и есть N = 2...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru