#include<iostream>
#include<fstream>
using namespace std;
char caratteri[10000];
int numero_caratteri = 0;
int lunghezza = 0;
ofstream fout("permutazioni.txt");
void CaricaCaratteri(char testo[]){
ifstream fin(testo);
while(!fin.eof()){
fin>>caratteri[numero_caratteri];
numero_caratteri++;
}
numero_caratteri--;
fin.close();
}
void Calcola(char attuale[] , int lunghezza_attuale){
if(lunghezza_attuale>=lunghezza-1){//Se c'è solo un carattere da aggiungere
for(int i=0; i<numero_caratteri; i++){//Per tutti i caratteri
for(int j=1; j<=lunghezza_attuale; j++){
fout<<attuale[j];
}
fout<<caratteri[i]<<endl;
}
}else{//altrimenti se ce ne sono almeno due da aggiungereù
for(int i=0; i<numero_caratteri; i++){//Per tutti i caratteri
char attuale2[10000];
//Ricopio i vettori in altri due per evitare il problema del passaggio di parametri per indirizzo
for(int j=0; j<=lunghezza_attuale; j++) attuale2[j]=attuale[j];
//Aggiorno situazione
attuale2[lunghezza_attuale+1]=caratteri[i];
//Mi richiamo
Calcola(attuale2,lunghezza_attuale+1);
}
}
}
int main(int argc , char *argv[]){
CaricaCaratteri(argv[1]);
cout<<"Di quanto vuoi che sia lunga la sequenza?"<<endl;
cin>>lunghezza;
char a[10000];
Calcola(a,0);
fout.close();
return 0;
}