博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 11218 - KTV
阅读量:5892 次
发布时间:2019-06-19

本文共 1790 字,大约阅读时间需要 5 分钟。

Problem K

KTV

解题思路:题目的意思是说9个人平均分成三组,题目的输出提供分组的情况,每组有一个权值,在找到三组刚好是不同9个人的前提下求出最大的权值,如果连一种找齐的情况都没有则输出-1,所以就直接一层一层以两个分支往下查找就行了

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=112&page=show_problem&problem=2159

1 #include
2 #include
3 #include
4 #define SIZE 81 5 using namespace std; 6 typedef struct group{ 7 int member[3]; 8 int score; 9 }group;10 int n, score;11 group Case[SIZE];12 int ktv[10], list[3];13 14 void Traverse(int cur, int cnt){15 if(cur >= n || cnt == 3){16 if(cnt == 3){17 int sum = 0;18 for(int i=0; i<3; ++i){19 sum += Case[list[i]].score;20 }21 if(sum > score) score = sum;22 }23 return;24 }25 bool flag = false;26 for(int i=0; i<3; ++i){27 if(ktv[Case[cur].member[i]] == 1){28 flag = true;29 break;30 }31 }32 if(!flag){33 for(int i=0; i<3; ++i){34 ktv[Case[cur].member[i]] = 1;35 }36 list[cnt] = cur;37 Traverse(cur+1, cnt+1);38 for(int i=0; i<3; ++i){39 ktv[Case[cur].member[i]] = 0;40 }41 }42 Traverse(cur+1, cnt);43 return;44 }45 46 int main()47 {48 #ifndef ONLINE_JUDGE49 freopen("input.txt", "r", stdin);50 #endif51 int T = 0;52 while(cin>>n && n){53 score = -1;54 memset(ktv, 0, sizeof(ktv));55 for(int i=0; i
>Case[i].member[j];58 }59 cin>>Case[i].score;60 }61 Traverse(0, 0);62 cout<<"Case "<<++T<<": "<
<

 

 

转载于:https://www.cnblogs.com/liaoguifa/archive/2013/05/13/3075884.html

你可能感兴趣的文章
angularjs初识
查看>>
《JavaScript模式》读书笔记(二)字面量和构造函数
查看>>
带你实现一个 JSONP 实例
查看>>
学校 -> 实习 -> 毕业,前端——我一直在路上
查看>>
Java反射-Getters and Setters
查看>>
ImmutableMap不可使用null的问题
查看>>
01背包问题 (动态规划算法)
查看>>
C#实体对象序列化成Json,并让字段的首字母小写
查看>>
遍历PHP数组的6种方式
查看>>
重构-改善既有代码的设计(一)--重构,第一个案例
查看>>
MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发
查看>>
块级格式化上下文(BFC)
查看>>
[LintCode] Buy Fruits
查看>>
ZStack源码剖析之二次开发——可扩展框架
查看>>
Elasticsearch分布式一致性原理剖析(一)-节点篇
查看>>
一个基于vue的图片轮播组件的实现
查看>>
Scrapy 之 settings
查看>>
动态规划入门H - 合唱队形 (最优子序列的另一个应用,这里是最优递增和最优递减子序列的结合)...
查看>>
游戏服务器JVM优化
查看>>
【359天】每日项目总结系列096(2018.01.30)
查看>>