Documente Academic
Documente Profesional
Documente Cultură
Cerinţa
Se citeşte un număr natural nenul n. Să se afişeze, în ordine lexicografică, permutările
mulţimii {1,2,..,n}.
Date de intrare
Fişierul de intrare permutari.in conţine pe prima linie numărul n.
Date de ieşire
Fişierul de ieşire permutari.out va conţine pe fiecare linie elementele unei permutări,
separate prin câte un spaţiu.
Restricţii şi precizări
• 0<n<9
Date de intrare
Fişierul de intrare permutari1.in conţine pe prima linie numărul n.
Date de ieşire
Fişierul de ieşire permutari1.out va conţine pe fiecare linie elementele unei permutări,
separate prin câte un spaţiu.
Restricţii şi precizări
• 0<n<9
Date de intrare
Fişierul de intrare permutari2.in conţine pe prima linie numărul n, ia r pe a doua
linie n numere naturale.
Date de ieşire
Fişierul de ieşire permutari2.out va conţine pe fiecare linie elementele unei permutări,
separate prin câte un spaţiu.
Restricţii şi precizări
• 0<n<9
• cele n numere de pe a doua linie a fişierului de intrare sunt mai mici decât 100
Cerinţa
Se citeşte un număr natural nenul n. Să se afişeze, în ordine lexicografică, permutările
fără puncte fixe ale mulţimii {1,2,..,n}.
Date de intrare
Fişierul de intrare permpf.in conţine pe prima linie numărul n.
Date de ieşire
Fişierul de ieşire permpf.out va conţine pe fiecare linie elementele unei permutări,
separate prin câte un spaţiu.
Restricţii şi precizări
• 0<n<9
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran o singură configurație validă a tablei de șah. Ea va fi
alcătuită din n linii cu câte n caractere - sau *, separate prin câte un spațiu.
Caracterul - reprezintă o poziție liberă de pe tablă, iar caracterul * reprezintă o poziție de
pe tablă ocupată de o regină.
Restricții și precizări
• 4 ≤ n ≤ 10;
• două regine se atacă dacă se află pe aceeași linie, aceeași coloană sau aceeași
diagonală;
• orice configurație validă a tablei este acceptată.
Date de intrare
Fişierul de intrare sirpie.in conţine pe prima linie numărul n, iar pe a doua linie n numere
naturale.
Date de ieşire
Fişierul de ieşire sirpie.out va conţine pe fiecare linie elementele unei șir, separate prin
câte un spaţiu.
Restricţii şi precizări
• 1 ≤ n < 10
• cele n numere de pe a doua linie a fişierului de intrare sunt mai mici decât 10000
#include <fstream>
using namespace std;
ifstream f ("sirpie.in");
ofstream g ("sirpie.out");
int x[10], n,v[10];
int
Solutie (int k)
{
if (k == n)
return 1;
else
return 0;
}
int cmmdc(int a, int b)
{
int r;
r=a%b;
while(r!=0)
{ }
a=b; void Back (int k)
b=r; {for (int i = 1; i <= n; i++)
r=a%b; { x[k] = i;
} if (OK (k))
return b; if (Solutie (k))
} Afisare (k);
int else Back (k + 1);
OK (int k) }}
{ int main ()
for (int i = 1; i < k; i++) {
if (x[k] == x[i]) int i,j,aux;
return 0; f >> n;
if(k>1) for(i=1; i<=n; i++)
if(cmmdc(v[x[k- f>>v[i];
1]],v[x[k]])!=1) for(i=1; i<n; i++)
return 0; for(j=i+1; j<=n; j++)
return 1; if(v[i]>v[j])
} {
void Afisare (int k) aux=v[i];
{ v[i]=v[j];
for (int i = 1; i <= k; i++) v[j]=aux; }
g << v[x[i]] << " "; Back (1);
g << endl; return 0;}
#3161permutari5
Cerința
Se citește o multime cu n numere naturale. Afișați în ordine lexicografică toate
permutările mulțimii citite în care elementul minim nu își schimbă poziția.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte,
separate prin spații.
Date de ieșire
Programul va afișa pe ecran permutările cerute, pe rânduri separate, fiecare permutare
având elementele separate prin câte un spațiu.
Restricții și precizări
• 1 ≤ n ≤ 10
• cele n numere citite vor fi mai mici decât 1.000.000.000 și vor fi distincte
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ă.
Date de intrare
Fişierul de intrare combinari.in conţine pe prima linie numerele n și k, separate printr-un
spatiu.
Date de ieşire
Fişierul de ieşire combinari.out va conţine pe fiecare linie câte k valori, separate prin câte
un spaţiu, reprezentând elementele unei submulțimi.
Restricţii şi precizări
• 1 ≤ k ≤ n ≤ 15
• elementele fiecărei submulţimi vor fi afişate în ordine crescătoare
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte,
separate prin spații.
Date de ieșire
Programul va afișa pe ecran permutările cerute, pe rânduri separate, fiecare permutare
având elementele separate prin câte un spațiu.
Restricții și precizări
• 1 ≤ n ≤ 10
• cele n numere citite vor fi mai mici decât 1.000.000.000 și vor fi distincte
#include <iostream>
using namespace std;
int x[10],n,aux,v[100],vmin,pmin,pmax,vmax;
int Solutie(int k)
{ if(k==n)
return 1;
else return 0;
} int OK(int k)
{ for(int i=1;i<k;i++)
if(x[i]==x[k]) return 0;
if(v[x[k]]==vmin && k!=pmin) return 0;
if (v[x[k]]==vmax && k!=pmax) return 0;
return 1;}
void Afisare(int k)
{ for(int i=1;i<=k;i++)
cout<<v[x[i]]<<" ";
cout<<endl;
} void Back(int k){
for(int i=1;i<=n;i++)
{ x[k]=i;
if(OK(k))
if(Solutie(k))
Afisare(k);
else Back(k+1); } }
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
vmin=v[1];
pmin=1;
for(int i=1;i<=n;i++)
if(v[i]<vmin)
{vmin=v[i];
pmin=i;}
vmax=v[1];
pmax=1;
for(int i=1;i<=n;i++)
if(v[i]>vmax)
{vmax=v[i];
pmax=i;}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
Back(1);
return 0;}