本文主要是介绍uva11218 KTV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简单题,不过还是wa了几次,原因是错误的用char来存储set——value可能大于128
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAX 81
using namespace std;char vis[MAX],visit[10];
int big,n,flag,set[MAX][4];//set不能是charvoid dfs(int cur,int all)
{if(cur==3){if(all>big){flag=1;big=all;}return ;}int i,j;for(i=0;i<n;i++){if(!vis[i]){if(!visit[set[i][0]]&&!visit[set[i][1]]&&!visit[set[i][2]]){vis[i]=1;visit[set[i][0]]=visit[set[i][1]]=visit[set[i][2]]=1;dfs(cur+1,all+set[i][3]);vis[i]=0;visit[set[i][0]]=visit[set[i][1]]=visit[set[i][2]]=0;}}}
}int main()
{int i,j,count=1;while(scanf("%d",&n)&&n){big=0,flag=0;memset(visit,0,10);memset(vis,0,MAX);for(i=0;i<n;i++)scanf("%d %d %d %d",&set[i][0],&set[i][1],&set[i][2],&set[i][3]);dfs(0,0);printf("Case %d: ",count++);if(flag==0)printf("-1\n");elseprintf("%d\n",big);}return 0;
}
这篇关于uva11218 KTV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!