//刘汝佳的白皮书推荐习题暴力专题,这题倒是很水,但是刚开始弄了半天才理解题意,可能是数据给的有点混淆吧
//数据如下
/*
3
1 2 3 1
4 5 6 2
7 8 9 3
4
1 2 3 1
1 4 5 2
1 6 7 3
1 8 9 4
0
N个3人组合中,只要任选3个组成一个不重复的组合,即为全部组合,而N为4的那个数据所有3人组里面都有1,所以是无法组成9人组的。所以就是-1
*/
#include <stdio.h>
#include <string.h>
int a[100][4];
int v[100];
int max;
int N;
void dfs( int step, int num )
{
if( step == 3 )
{
if( num > max )
max = num;
return;
}
for( int i = 0; i < N; i++ )
if( !v[a[i][0]] && !v[a[i][1]] && !v[a[i][2]] )
{
v[a[i][0]] = v[a[i][1]] = v[a[i][2]] = 1;
dfs( step+1, num+a[i][3] );
v[a[i][0]] = v[a[i][1]] = v[a[i][2]] = 0;
}
}
int main()
{
int p = 0;
while( scanf( "%d", &N ) && N )
{
max = -1;
memset( v, 0, sizeof(v) );
for( int i = 0; i < N; i++ )
scanf( "%d%d%d%d", &a[i][0], &a[i][1], &a[i][2], &a[i][3] );
dfs( 0, 0 );
printf("Case %d: %d\n", ++p, max );
}
return 0;
}
UVA 11218
最新推荐文章于 2021-05-04 17:28:53 发布