Pagini recente » Cod sursa (job #2961163) | Cod sursa (job #745109) | Cod sursa (job #481515) | Cod sursa (job #78721) | Cod sursa (job #2304847)
#include <iostream>
using namespace std;
int n, p;
int ST[20];
bool lepes(int k)
{
if(ST[k] < n){
ST[k]++;
return true;
}
return false;
}
bool ellenorzes(int k)
{
for(int i = 1; i < k; ++i){
if(ST[k] <= ST[i]){
return false;
}
}
return true;
}
bool megoldas(int k)
{
return k == p;
}
void backTracking()
{
int k = 1;
bool van, jo;
ST[k] = 0;
while(k){
do{
van = lepes(k);
if(van){
jo = ellenorzes(k);
}
}while(van && !jo);
if(van){
if(megoldas(k)){
for(int i = 1; i <= k; ++i){
printf("%d ", ST[i]);
}
printf("\n");
}
else{
k++;
ST[k] = 0;
}
}
else{
k--;
}
}
}
int main()
{
freopen("combinari.in", "r", stdin);
freopen("combinari.out", "w", stdout);
scanf("%d%d", &n, &p);
backTracking();
return 0;
}