# PBinfo #194 – Anagrame1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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ă.

Exemplu:
anagrame1.in

cal
anagrame1.out

acl
alc
cal
cla
lac
lca

## Cod sursă C++

```cpp
#include <fstream>
#include <iostream>
#include <cassert>
#include <cstring>
using namespace std;
ifstream fin("anagrame1.in");
ofstream fout("anagrame1.out");
char s[10];
int x[10],uz[10],n;
void afis(int k){
	for(int i=1;i<=n;++i)
		fout<<s[x[i]];
	fout << endl;
}
void back(int k){
	for(int i=0;i<n;++i)
		if(uz[i]==0){
			uz[i] = 1;
			x[k]=i;
			if(k==n)
				afis(k);
			else
				back(k+1);
			uz[i] = 0;
		}
}
int main(){
	fin >> s;
	n = strlen(s);
	for(int i=0;i<n;++i)
		for(int j=i+1; j<n;j++)
			if(s[i]>s[j]){
				char aux = s[i];
				s[i] = s[j];
				s[j] = aux;
			}
	back(1);
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/194)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/194/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-194/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
