Anagrame. Se citește un cuvânt cu n litere . Se cere să se tipărească toate anagramele
cuvântului citit. Se poate folosi algoritmul pentru generarea permutărilor.
Pascal si c++
Răspunsuri la întrebare
Răspuns de
0
Varianta c++:
#include <bits/stdc++.h> using namespace std; ifstream fin("anagrame1.in"); ofstream fout("anagrame1.out"); int st[10],top,f[10],n; char cuv[10],a[10]; void Citire() { int i; fin>>cuv; sort(cuv,cuv+strlen(cuv)); n++; f[n]++; a[n]=cuv[0]; for(i=1; i<strlen(cuv);) { if(a[n]==cuv[i]) { f[n]++; i++; } else { n++; f[n]++; a[n]=cuv[i]; i++; } } } void Afisare() { int i; for(i=1; i<=n; i++) fout<<a[st[i]]; fout<<"\n"; } void Back(int top) { int i; if(top==(n+1)) Afisare(); else for(i=1; i<=n; i++) if(f[i]) { f[i]--; st[top]=i; Back(top+1); f[i]++; } } int main() { Citire(); Back(1); fin.close(); fout.close(); return 0; }
#include <bits/stdc++.h> using namespace std; ifstream fin("anagrame1.in"); ofstream fout("anagrame1.out"); int st[10],top,f[10],n; char cuv[10],a[10]; void Citire() { int i; fin>>cuv; sort(cuv,cuv+strlen(cuv)); n++; f[n]++; a[n]=cuv[0]; for(i=1; i<strlen(cuv);) { if(a[n]==cuv[i]) { f[n]++; i++; } else { n++; f[n]++; a[n]=cuv[i]; i++; } } } void Afisare() { int i; for(i=1; i<=n; i++) fout<<a[st[i]]; fout<<"\n"; } void Back(int top) { int i; if(top==(n+1)) Afisare(); else for(i=1; i<=n; i++) if(f[i]) { f[i]--; st[top]=i; Back(top+1); f[i]++; } } int main() { Citire(); Back(1); fin.close(); fout.close(); return 0; }
Alte întrebări interesante
Chimie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă