Cod sursa(job #446279)

Utilizator cristian9Cristian Zloteanu cristian9 Data 25 aprilie 2010 16:01:33
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>

int n,st[100], k, p;

void  Init (){
    if (k > 1)
        st[k] = st[k-1];
    else
        st[k] = 0;
}

int evalid(){
	int i;
	for(i=1; i<k; i++){
		if(st[k]==st[i]){
			return 0;
		}
	}
	return 1;
}

int succesor(){
	if(st[k]<n-p+k){
		st[k]++;
		return 1;
	}
	return 0;
}

void afisare(){
	int i;
	for(i=1; i<=p; i++){
		printf("%d ", st[i]);
	}
	printf("\n");
}

int solutie(){
	if(k==p){
		return 1;
	}
	return 0;
}

void back()
{
	int as;
	k=1; 
	st[k]=0;
	while(k>0){
		do{} while((as=succesor()) && !evalid());
		if(as){
			if(solutie()){
				afisare();
			}
			else{
				k++;
				Init();
			}
		}
		else{
			k--;
		}
	}
}

int main()
{
	freopen ("combinari.in", "r", stdin);
	freopen ("combinari.out", "w", stdout);
	
	int i;
	scanf("%d %d", &n, &p);
	
	back();
	return 0;
}