Cod sursa(job #568502)

Utilizator PatrikStepan Patrik Patrik Data 31 martie 2011 12:41:36
Problema Combinari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
	#include<stdio.h>
	FILE *f , *g ;
	int n  ,st[10]   ,m;
	void citire();
	void tipar();
	void back(int k);
	int valid(int k);
	
	int main()
	{
		citire();
		g=fopen("combinari.out" , "w" );
		back(1);
		fclose(g);
		return 0;
	}
	
	void citire()
	{
		f=fopen("combinari.in" ,"r" );
		fscanf(f ,"%d%d" , &n  , &m);
		fclose(f);
	}
	
	void back(int k)
	{
		for (int i  = 1 ; i<= n ; ++i )
		{
			st[k] = st[k-1]+i;
			if (valid(k))
				if(k==m)
					tipar();
				else
					back(k+1);
		}
	}
	
	int valid(int k)
	{
		if (st[k] > n)
			return 0;
		for ( int j = 1 ; j<= k-1 ; j++)
			if(st[j] == st[k] )
				return 0;
			return 1;
	}
	
	void tipar()
	{
		for ( int j = 1 ;j<=  m; ++j )
			fprintf(g, "%d " , st[j] );
		fprintf(g ,"\n");
	}