Pagini recente » Cod sursa (job #727623) | Cod sursa (job #3004082) | Cod sursa (job #2126580) | Cod sursa (job #2460578) | Cod sursa (job #1688834)
#include <iostream>
#include <fstream>
using namespace std;
int st[20];
int n, comb;
ifstream f("combinari.in");
ofstream g("combinari.out");
int succesor(int k){
if(st[k] < comb){
st[k]++;
return 1;
}
return 0;
}
int valid(int k){
if(k > 0 && st[k-1] > st[k])
return 0;
for(int i = 0; i < k; i++)
if(st[k] == st[i])
return 0;
return 1;
}
int tipar(int k){
for(int i = 0; i < n; i++)
g << st[i] << " ";
g << '\n';
return 1;
}
int solutie(int k){
return k == n-1;
}
int main()
{
int k; f >> comb >> n; f.close();
k = 0; st[k] = 0;
while(k >= 0){
int as = succesor(k);
int ev = valid(k);
while(as && !ev){
as = succesor(k);
if(as)
ev = valid(k);
}
if(as){
if(solutie(k)){
tipar(k);
}
else{
k++;
st[k] = 0;
}
}
else
k--;
}
g.close();
return 0;
}