Cerinţa
Se numește permutare a unei mulțimi o aranjare a elementelor mulțimii în altă ordine. De exemplu, permutările mulțimii {1,2,3}
sunt: (1,2,3)
, (1,3,2)
, (2,1,3)
, (2,3,1)
, (3,1,2)
, (3,2,1)
.
Fie (p
1
, p
2
, ..., p
n
) o permutare a mulțimii {1,2,...,n}
. Se numește punct fix al permutării o valoare k
din mulțime cu proprietatea că p
k
= k
.
Scrieţi definiția completă a subprogramului C++ permutare
care are 2
parametri: a
, prin care primeşte un tablou unidimensional cu maximum 100
de numere naturale mai mici decât 1000
și n
, numărul efectiv de elemente ale tabloului.
Subprogramul verifică dacă elementele vectorului a
reprezintă o permutare fără puncte fixe a mulțimii {1,2,...,n}
și returnează valoarea 1
în caz afirmativ, respectiv 0
în caz negativ.
Restricţii şi precizări
0 < n <= 100
- numele subprogramului cerut este
permutare
- parametrii sunt, în această ordine:
a
,n
, cu semnificația de mai sus - elementele vectorului
a
sunt indexate de la zero
Exemplu
Dacă n=6
și a=(2,3,1,6,4,5)
subprogramul va returna valoarea 1
.
Dacă n=4
și a=(2,3,1,4)
subprogramul va returna valoarea 0
, deoarece permutarea are un punct fix.
Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema PermutarePF :
int permutare(int * a , int n)
{
int v[105];
for(int i = 1 ; i <= n ; i ++)
v[i] = 0;
for(int i = 0 ; i < n; i ++)
if(a[i] < 1 || a[i] > n || a[i] == i + 1)
return 0;
else
v[a[i]] ++;
for(int i = 1 ; i <= n ; i ++)
if(v[i] != 1)
return 0;
return 1;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #895 PermutarePF
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #895 PermutarePF de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!