Bu məsələdə siz -dən -ə qədər olan ədədlərin bütün düzülmələrini yaratmalısınız. Bunu, məsələn, next_permutation funksiyasından istifadə edərək etmək olar.
Alqoritmin icrası
Düzülmələri yaratmaq üçün massivindən istifadə edin.
int m[10];daxil olan dəyəri oxuyun.
scanf("%d",&n);Massiv -i ilkin düzülmə 1~2~3~...~n ilə ilk indeksdən başlayaraq başlatın.
for (i = 1; i <= n; i++)
m[i] = i;next_permutation funksiyasından istifadə edərək bütün düzülmələri yaradın— leksikoqrafik ən kiçikdən leksikoqrafik ən böyüyə qədər.
do
{Hər yaradılan düzülməni ayrıca sətirdə çap edin.
for (i = 1; i <= n; i++)
printf("%d ",m[i]);
printf("\n");
} while (next_permutation(m + 1, m + n + 1));Alqoritmin icrası — vektor
Düzülmələri yaratmaq üçün vektorundan istifadə edin.
vector<int> v;daxil olan dəyəri oxuyun.
scanf("%d", &n);Massiv -i ilkin düzülmə 1~2~3~...~n ilə sıfır indeksdən başlayaraq başlatın.
v.resize(n);
for (i = 0; i < n; i++)
v[i] = i + 1;next_permutation funksiyasından istifadə edərək bütün düzülmələri yaradın— leksikoqrafik ən kiçikdən leksikoqrafik ən böyüyə qədər.
do
{Hər yaradılan düzülməni ayrıca sətirdə çap edin.
for (i = 0; i < n; i++)
printf("%d ", v[i]);
printf("\n");
} while (next_permutation(v.begin(), v.end()));