Permutasi dari string merupakan kombinasi dari masing-masing elemen string dalam string tersebut. Cara yang akan kita gunakan adalah dengan menukar tempat karakter-karakternya dan ini dilakukan secara rekursif.
Sebagai contoh string MAS (n=3), substring berikutnya adalah AS dan ditukar menjadi SA, substring berikutnya dari SA adalah A dan hanya satu karakter sehingga tidak dilakukan permutasi, karena itu didapat MSA. (ini menjadi basis)
Putaran kedua adalah menukar tempat posisi ke-1 ke posisi terakhir sehingga didapat SAM, algoritma diulang kembali (rekursi) dan n berkurang 1 (n=2)
Script :
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
//-----------------------------------//
//PROGRAM BY DEVILZ0DE//
using namespace std;
void permut(string , string);
int main()
{
char pil;
do
{
string s;
puts("================================");
printf("PROGRAM PERMUTASI\n");
puts("================================");
printf("\nInput suatu string : "); cin >> s;
cout << "\nPermutasi dari string " << s << endl;
puts("================================");
permut(s," ");
puts("================================");
printf("\nAnda Mau mengulangi lagi? ");
scanf("%s",&pil);
}
while(pil=='Y'||pil=='y');
getch();
return 0;
}
void permut(string s , string pre=" ")
{
int n = s.length();
if (n==1)
cout << pre + s << endl; //basis
else
for(int i=0; i<n; i++)
{
char temp = s[i];
s[i] = s[0];
s[0] = temp;
permut(s.substr(1,n-1),pre+s.substr(0,1)); //rekursi
}
}