Buna! Va rog mult sa ma ajutati cu oproblema in c++ ^^
Se numește anagramă a unui cuvânt dat, un alt cuvânt ce conține toate literele primului, eventual în altă ordine.
Cerinţa
Se dă un cuvânt din cel mult 8 litere distincte. Să se afișeze, în ordine alfabetică, toate anagramele acestui cuvânt.
Date de intrare
Fişierul de intrare anagrame1.in conţine pe pe prima linie un cuvânt S, format din cel mult 8 litere distincte ale alfabetului englez.
Date de ieşire
Fişierul de ieşire anagrame1.out va conţine toate anagramele cuvântului S, fiecare pe o linie, în ordine alfabetică.
Răspunsuri la întrebare
Răspuns de
7
#include <fstream>
#include <cstring>
using namespace std;
ifstream is("anagrame1.in");
ofstream os("anagrame1.out");
int n;
char v[100],st[50], p[50];
void scrie()
{
int i;
{
for(i=1;i<=n;i++)
os<<v[st[i]-1];
os<<'\n';
}
}
void back(int k)
{
for(int i=1;i<=n;i++)
if(!p[i])
{
st[k]=i;
p[i]=1;
if(k==n) scrie();
else back(k+1);
p[i]=0;
}
}
int main()
{
int i;
is.get(v,1000);
n=strlen(v);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(v[i]>v[j])
{
char aux=v[i]; v[i]=v[j]; v[j]=aux;
}
back(1);
return 0;
}
#include <cstring>
using namespace std;
ifstream is("anagrame1.in");
ofstream os("anagrame1.out");
int n;
char v[100],st[50], p[50];
void scrie()
{
int i;
{
for(i=1;i<=n;i++)
os<<v[st[i]-1];
os<<'\n';
}
}
void back(int k)
{
for(int i=1;i<=n;i++)
if(!p[i])
{
st[k]=i;
p[i]=1;
if(k==n) scrie();
else back(k+1);
p[i]=0;
}
}
int main()
{
int i;
is.get(v,1000);
n=strlen(v);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(v[i]>v[j])
{
char aux=v[i]; v[i]=v[j]; v[j]=aux;
}
back(1);
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă