Permutasiyalar#2169

Permutasiyalar (Həll təhlili)

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()));