uva 11218 KTV
来源:互联网 发布:表白网页源码下载 编辑:程序博客网 时间:2024/06/10 18:49
简单的回溯题目
#include <stdio.h>#include <string.h>#include <set>using namespace std;struct node{int a;int b;int c;int s;};struct node arr[100];struct node solution[4];bool visited[100];bool vis[10];int case_count;int max_score;void dfs(int cur, int node_num){int i;if(4 == cur){int sum;sum = solution[1].s + solution[2].s + solution[3].s;if(max_score < sum)max_score = sum;return;}for(i=1; i<=node_num; i++){if(visited[i])continue;if(cur == 1){visited[i] = true;memcpy(solution+cur, arr+i, sizeof(struct node));vis[arr[i].a] = vis[arr[i].b] = vis[arr[i].c] = true;dfs(cur+1, node_num);visited[i] = false;vis[arr[i].a] = vis[arr[i].b] = vis[arr[i].c] = false;}else{if(!vis[arr[i].a] && !vis[arr[i].b] && !vis[arr[i].c]){visited[i] = true;vis[arr[i].a] = vis[arr[i].b] = vis[arr[i].c] = true;memcpy(solution+cur, arr+i, sizeof(struct node));dfs(cur+1, node_num);visited[i] = false;vis[arr[i].a] = vis[arr[i].b] = vis[arr[i].c] = false;}}}}void func(int n){max_score = -1;for(int i=1; i<=n; i++)visited[i] = false;for(int i=1; i<=9; i++)vis[i] = false;dfs(1, n);printf("Case %d: %d\n", case_count, max_score);}int main(void){int n, i;//freopen("input.dat", "r", stdin);while(scanf("%d",&n), n){for(i=1; i<=n; i++)scanf("%d %d %d %d", &(arr[i].a), &(arr[i].b), &(arr[i].c), &(arr[i].s));case_count ++;func(n);}}
- UVa 11218 KTV
- UVA 11218 - KTV
- uva 11218 - KTV
- uva 11218 - KTV
- UVa 11218 - KTV
- Uva 11218 - KTV
- uva 11218 KTV(DFS)
- UVA 11218 - KTV DFS
- uva 11218 KTV
- uva 11218 - KTV
- UVa 11218—KTV
- UVa 11218 - KTV
- UVa 11218 - KTV
- uva 11218 - KTV 简单回溯
- UVA 11218 KTV 深搜+回溯
- uva 11218 KTV(DFS+回溯)
- UVa 11218 KTV (枚举&位运算)
- UVA - 11218 KTV(暴力求解)
- Android开发源码链接
- 黑马程序员-集合概念与工具类Collections
- 基于MINA实现server端心跳检测(KeepAliveFilter)
- 深入理解C++的动态绑定和静态绑定
- chromium设置字体大小功能
- uva 11218 KTV
- ios本地化系统文字的方法,比如键盘的send本地化为发送
- hdu 3749 点双连通
- 80C51 单片机 蜂鸣器
- 工作那些事(十六)面试时,面试官喜欢的非技术问题汇总
- [JAVA软件工程师-面试宝典-2013最新版]
- CRM管理:邮件营销大学问
- ant的配置(二)创建文件并编译、删除文件、生成jar包和run设置
- extern用法详解