Cerinţa
Se dă un număr natural n
şi un interval [a,b]
. Determinaţi, în ordine lexicografică, toate modalităţile de a-l scrie pe n
ca sumă de numere naturale din intervalul [a,b]
.
Date de intrare
Fişierul de intrare partitiinumar3.in
conţine pe prima linie numerele n
, a
şi b
.
Date de ieşire
Fişierul de ieşire partitiinumar3.out
va conţine pe pe fiecare linie câte un şir de numere naturale din intervalul [a,b]
, ordonate crescător, separate prin câte un spaţiu. Suma numerelor din fiecare şir este n
. Şirurile vor fi afişate în ordine lexicografică.
Restricţii şi precizări
1 ≤ a < b < n ≤ 40
Exemplu
partitiinumar3.in
10 2 4
partitiinumar3.out
2 2 2 2 2 2 2 2 4 2 2 3 3 2 4 4 3 3 4
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 PartitiiNumar3:
#include <fstream>
#include <iostream>
using namespace std;
int x[1000], n, a, b;
ifstream fin("partitiinumar3.in");
ofstream fout("partitiinumar3.out");
int minim(int x, int y){
return x<y ? x : y;
}
void afisare(int k){
for(int i=1;i<=k;++i)
fout << x[i] << " ";
fout << "
";
}
void back(int k, int s){
for(int i=x[k-1] ; i<= minim(n-s,b) ; ++i)
{
x[k]=i;
if(s+x[k]<=n)
if( s+x[k] == n )
afisare(k);
else
back(k+1, s+x[k]);
}
}
int main(){
fin >> n >> a >> b;
x[0] = a;
back(1,0);
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 #323 PartitiiNumar3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #323 PartitiiNumar3 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!