Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("2gen.in");
ofstream fout("2gen.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 i,nr=0;
for (i=1;i<k;i++)
if (sol[k]==sol[i]) nr++;
return (nr<=1);
}
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: