UVa 441 - Lotto

题目:给定一个数字的集合,计算从里面取出6个的组合。

分析:搜索。

#include 
#include 
#include 

using namespace std;

int numb[50];
int used[50];
int save[50];

void dfs( int d, int s, int n )
{
	if ( d == 6 ) {
		printf("%d",save[0]);
		for ( int i = 1 ; i < 6 ; ++ i )
			printf(" %d",save[i]);
		printf("\n");
		return;
	}
	for ( int i = s ; i < n ; ++ i )
		if ( !used[i] ) {
			used[i] = 1;
			save[d] = numb[i];
			dfs( d+1, i+1, n );
			used[i] = 0;
		}
}

int main()
{
	int n,t = 0;
	while ( cin >> n && n ) {
		if ( t ++ ) printf("\n");
		for ( int i = 0 ; i < n ; ++ i ) {
			cin >> numb[i];
			used[i] = 0;
		}
		dfs( 0, 0, n );
	}
	
	return 0;
}

你可能感兴趣的:(入门题,解题报告)