Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("2genc.in");
ofstream fout("2genc.out");
int n,m,sol[20];
int succesor(int k)
{
if (sol[k]<n)
{
sol[k]++;
return 1;}
else return 0;
}
int valid(int k)
{int ev=0;
if (sol[k]>=sol[k-1] || sol[k]==sol[k-1]-1) ev=1;
return ev;
}
void back(int k)
{
if(k==m+1)
{for(int i=1;i<=m;i++) fout<<sol[i]<<" ";
fout<<endl;}
else
{
sol[k]=0;
while (succesor(k))
if (valid(k)) back(k+1);
}
}
int main()
{
fin >>n>>m;
back(1);
return 0;
}
Explicație:
Am folosit tehnica backtracking
Vă mulțumim că ați vizitat site-ul nostru web care acoperă despre Informatică. Sperăm că informațiile furnizate v-au fost utile. Nu ezitați să ne contactați dacă aveți întrebări sau aveți nevoie de asistență suplimentară. Ne vedem data viitoare și nu ratați să marcați.