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

Нахождение всех перестановок - C++

Восстановить пароль Регистрация
 
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41
12.04.2010, 14:49     Нахождение всех перестановок #1
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
#include <iostream>
#include <string>
using namespace std;
 
 
int aton(char a) // преобразование символа в номер цифры
{
    if ((a >= '0') && (a <= '9'))
        return a - '0';
    else if ((a >= 'a') && (a <= 'z'))
        return a - 'a' + 10;
    else
        return a - 'A' + 10;
}
 
int main()
{int a[10],b,i,j,k,Ls,x,z,q;
string s;
cout<<"Vvedite posledovatel'nost' chisel"<<"\n";
cin>>s;
q=0;i=1;j=1;
Ls=s.length();
for(i=1;i<Ls+1;i++) a[i]=aton(s[i-1]);
b=a[Ls];
do
{
i=Ls-1;
while(a[i]>a[i+1]) i=i-1;
j=i+1;
while(a[j]>a[i]) j=j+1;
j=j-1;
x=a[i];
a[i]=a[j];
a[j]=x;
for(k=1;k<(Ls-i+1)/2;k++)
{
    x=a[i+k];
    a[i+k]=a[Ls-k+1];
    a[Ls-k+1]=x;
}
cout<<"\n";
for(z=1;z<Ls+1;z++)
cout<<a[z];
q++;
cout<<"\n"<<q;
}
while(a[1]!=b);
cout<<"\n";
 
system("pause");
    return 0;
}
проблема состоит в том,что программа находит не все возможные перестановки.
Например
s=123
a=132
a=231
a=321

помогите разобраться в чем ошибка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2010, 14:49     Нахождение всех перестановок
Посмотрите здесь:

C++ Нахождение всех совершенных чисел.
Выведение всех перестановок C++
Генерация всех перестановок n элементного множества C++
C++ нахождение всех углов в треугольнике
Генерация массива всех перестановок из n элементов. C++
C++ Поиск всех перестановок символов из строки (0..9)..пожалуйста помогите!!!
C++ Вывод всех перестановок без использования массивов
C++ По перестановке определить его номер в лексикографическом перечислении всех перестановок множества

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

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

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