Răspuns :
#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
void Calculate(vector <int> LeftArr,vector <int> GenArr,int Position=1);
void ReplaceAdd(vector <int> &Arr,int Position,int Nr);
void DeleteNrFromArr(vector <int> Arr,vector <int> &ResArr,int Nr);
int RemainedVal(vector <int> &Arr);
int main(){
int n=0;
vector <int> a;
vector <int> b;
cin>>n;
for(int x=0;x<n;x++){
a.push_back(x+1);
}
Calculate(a,b);
system("pause");
return 0;
}
//MaxVal is n and Position the position of the 'void' in the array to help the algorithm know where it is
// and how many elements are left in the LeftArr
void Calculate(vector <int> LeftArr,vector <int> GenArr,int Position){
int MaxVal=LeftArr.size();
vector <int> TempArr;
if(Position!=MaxVal){
for(int y=0;y<MaxVal;y++){
if(LeftArr[y]!=0) {
DeleteNrFromArr(LeftArr,TempArr,LeftArr[y]);
ReplaceAdd(GenArr,Position,LeftArr[y]);
Calculate(TempArr,GenArr,Position+1);
}
}
}else{
if(RemainedVal(LeftArr)) {
ReplaceAdd(GenArr,Position,RemainedVal(LeftArr));
for(int w=0;w<MaxVal;w++) cout<<GenArr[w];
cout<<endl;
}
}
}
void ReplaceAdd(vector <int> &Arr,int Position,int Nr){
if(Arr.size()==0 || Arr.size()<=Position-1)
Arr.push_back(Nr);
else
Arr[Position-1]=Nr;
}
void DeleteNrFromArr(vector <int> Arr,vector <int> &ResArr,int Nr){
ResArr=Arr;
for(int z=0;z<Arr.size() ;z++)
if(Arr[z]==Nr) ResArr[z]=0;
}
int RemainedVal(vector <int> &Arr){
for(int i=0;i<Arr.size();i++)
if(Arr[i]!=0){
return Arr[i];
continue;
}
}
Stiu ca pare putin cam complicat...dar in principiu e simplu. Ca sa faci permutari ai nevoie de mai multe for-uri in functie de cate nr. ai introdus. Ex de la 1 la 3 ai nevoie de 3 for-uri care insa sa nu dea acelasi numar ca cel din urma...adica for(x=1;x<=3;x++){ for(y=1;y<=3;y++){if(x!=y) for(z=1;z<=3;z++){ if(x!=y!=z) cout<<<x<<y<<z; sau mai rapid for(x=1;x<4;x++) for(y=1;y<4;y++) for(z=1;z<4;z++) if(x!=y!=z) cout<<x<<y<<z;
Insa tu poti sa schimbi 3 in 10,de exemplu. Deci nu poti sa pui un nr. fix de for.-uri. totul e facut virtual apeland de mai multe ori o functie care contine de obicei un for ,de n-ori
#include<math.h>
#include<vector>
using namespace std;
void Calculate(vector <int> LeftArr,vector <int> GenArr,int Position=1);
void ReplaceAdd(vector <int> &Arr,int Position,int Nr);
void DeleteNrFromArr(vector <int> Arr,vector <int> &ResArr,int Nr);
int RemainedVal(vector <int> &Arr);
int main(){
int n=0;
vector <int> a;
vector <int> b;
cin>>n;
for(int x=0;x<n;x++){
a.push_back(x+1);
}
Calculate(a,b);
system("pause");
return 0;
}
//MaxVal is n and Position the position of the 'void' in the array to help the algorithm know where it is
// and how many elements are left in the LeftArr
void Calculate(vector <int> LeftArr,vector <int> GenArr,int Position){
int MaxVal=LeftArr.size();
vector <int> TempArr;
if(Position!=MaxVal){
for(int y=0;y<MaxVal;y++){
if(LeftArr[y]!=0) {
DeleteNrFromArr(LeftArr,TempArr,LeftArr[y]);
ReplaceAdd(GenArr,Position,LeftArr[y]);
Calculate(TempArr,GenArr,Position+1);
}
}
}else{
if(RemainedVal(LeftArr)) {
ReplaceAdd(GenArr,Position,RemainedVal(LeftArr));
for(int w=0;w<MaxVal;w++) cout<<GenArr[w];
cout<<endl;
}
}
}
void ReplaceAdd(vector <int> &Arr,int Position,int Nr){
if(Arr.size()==0 || Arr.size()<=Position-1)
Arr.push_back(Nr);
else
Arr[Position-1]=Nr;
}
void DeleteNrFromArr(vector <int> Arr,vector <int> &ResArr,int Nr){
ResArr=Arr;
for(int z=0;z<Arr.size() ;z++)
if(Arr[z]==Nr) ResArr[z]=0;
}
int RemainedVal(vector <int> &Arr){
for(int i=0;i<Arr.size();i++)
if(Arr[i]!=0){
return Arr[i];
continue;
}
}
Stiu ca pare putin cam complicat...dar in principiu e simplu. Ca sa faci permutari ai nevoie de mai multe for-uri in functie de cate nr. ai introdus. Ex de la 1 la 3 ai nevoie de 3 for-uri care insa sa nu dea acelasi numar ca cel din urma...adica for(x=1;x<=3;x++){ for(y=1;y<=3;y++){if(x!=y) for(z=1;z<=3;z++){ if(x!=y!=z) cout<<<x<<y<<z; sau mai rapid for(x=1;x<4;x++) for(y=1;y<4;y++) for(z=1;z<4;z++) if(x!=y!=z) cout<<x<<y<<z;
Insa tu poti sa schimbi 3 in 10,de exemplu. Deci nu poti sa pui un nr. fix de for.-uri. totul e facut virtual apeland de mai multe ori o functie care contine de obicei un for ,de n-ori
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!