Cerința
Se dă un număr natural n
. Afișați în ordine lexicografică toate secvențele de cifre binare care au atâtea cifre de 0
și atâtea cifre de 1
câte are reprezentarea binară a lui n
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran combinațiile de cifre binare cerute, câte una pe fiecare rând.
Restricții și precizări
1 ≤ n ≤ 2.000.000
Exemplu
Intrare
17
Ieșire
00011 00101 00110 01001 01010 01100 10001 10010 10100 11000
Explicație
Numărul n are reprezentarea binară 10001, deci se generează combinațiile cu 3 cifre de 0 si 2 cifre de 1.
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 cifre_bin_back:
#include <iostream>
using namespace std;
int X[31],c0,c1,n;
void afisare()
{
for(int i=1;i<=n;i++)
cout<<X[i];
cout<<"\n";
}
int ok(int k)
{
int cc0=0,cc1=0;
for(int i=1;i<=k;i++)
if(X[i]==0) cc0++;
else cc1++;
if(cc0>c0 || cc1>c1) return 0;
return 1;
}
void back(int k)
{
for(int i=0;i<=1;i++)
{
X[k]=i;
if(ok(k))
{
if(k==n) afisare();
else back(k+1);
}
}
}
int main()
{
cin>>n;
while(n)
{
if(n%2) c1++;
else c0++;
n=n/2;
}
n=c0+c1;
back(1);
return 0;
}
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 #3162 cifre_bin_back
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3162 cifre_bin_back 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!