当前位置:编程学习 > C/C++ >>

11218 - KTV

[cpp] 
描述:直接暴就可以了  
#include <cstdio>  
#include <cstdlib>  
#include <cstring>  
#define N 100003  
int num[1010][4],s[11];  
int n,sum,m=1;  
void dfs(int cur,int count)  
{  
    int x=0;  
    for(int i=1; i<=9; i++)  
        if(!s[i])  
        {  
            x=1;  
            break;  
        }  
    if(cur>=n||!x)  
    {  
        if(!x&&count>sum) sum=count;  
        return;  
    }  
    for(int i=cur; i<n; i++)  
    {  
        if(s[num[i][0]]+s[num[i][1]]+s[num[i][2]]==0)  
        {  
            s[num[i][0]]=s[num[i][1]]=s[num[i][2]]=1;  
            dfs(cur+1,count+num[i][3]);  
            s[num[i][0]]=s[num[i][1]]=s[num[i][2]]=0;  
        }  
    }  
}  
int main()  
{  www.zzzyk.com
  //  freopen("a.txt","r",stdin);  
    while(scanf("%d",&n)!=EOF)  
    {  
        if(!n) break;  
        sum=-1;  
        memset(s,0,sizeof(s));  
        for(int i=0; i<n; i++)  
            scanf("%d%d%d%d",&num[i][0],&num[i][1],&num[i][2],&num[i][3]);  
        dfs(0,0);  
        printf("Case %d: %d\n",m++,sum);  
    }  
    return 0;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,