UVA 11218 KTV

好久没写题了

 

CODE:

 

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using  namespace std;

const  int M =  82;
int r[M][ 4];
int v[M];
int n, tot;
int flag;

void dfs( int cur,  int ans)
{
     if(cur ==  3)
    {
        tot = max(ans, tot);
    }
     for( int i =  0; i < n; i++)
    {
         if(!v[r[i][ 0]] && !v[r[i][ 1]] && !v[r[i][ 2]])
        {
            ans += r[i][ 3];
            v[r[i][ 0]] = v[r[i][ 1]] = v[r[i][ 2]] =  1;
            dfs(cur+ 1, ans);
            ans -= r[i][ 3];
            v[r[i][ 0]] = v[r[i][ 1]] = v[r[i][ 2]] =  0;
        }
    }
}

void init()
{
    flag =  0;
    memset(r,  0sizeof(r));
    memset(v,  0sizeof(v));
}

int main()
{
     int times =  0;
     while(~scanf( " %d ", &n) && n)
    {
        init();
        tot = - 1;
         for( int i =  0; i < n; i++)
            scanf( " %d%d%d%d ", &r[i][ 0], &r[i][ 1], &r[i][ 2], &r[i][ 3]);
        dfs( 00);
        printf( " Case %d:  ", ++times);
        printf( " %d\n ", tot);
    }
     return  0;
}

 

你可能感兴趣的:(uva)