light 1011 - Marriage Ceremonies
来源:互联网 发布:沈阳系统i5编程实例 编辑:程序博客网 时间:2024/06/05 18:55
dp[n][1<<n] 第一维 表示第i个男士,第二维 的二进制第几位有1 表示,第几个女士已经和前i个男士中的某个搭伙了
dp[i][s|(1<<j)] = max(dp[i][s|(1<<j)] , dp[i-1][s] + map[i][j+1]);
#include <queue>#include <cstdio>#include <utility>#include <cstring>#include <algorithm>using namespace std;int map[20][20];int n;int dp[20][66000];int main(){ int t; int cnt = 0; scanf("%d", &t); while(t--) { scanf("%d", &n); for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { scanf("%d", &map[i][j]); } } memset(dp,0,sizeof(dp)); for(int i = 0; i < n; i++) { dp[1][1<<i] = map[1][i+1]; } for(int i = 2; i <= n; i++) { for(int s = 0; s < (1<<n); s++) { if(dp[i-1][s] != 0) { for(int j = 0; j < n; j++) { if(! (s & (1<<j)))//第j个女士单着,试试脱单 { if(dp[i][s|(1<<j)] < dp[i-1][s] + map[i][j+1]) { dp[i][s|(1<<j)] = dp[i-1][s] + map[i][j+1]; } } } } } } printf("Case %d: %d\n", ++cnt, dp[n][(1<<n)-1]); } return 0;}
0 0
- light 1011 - Marriage Ceremonies
- Marriage Ceremonies--Light OJ 1011
- Light 1011 - Marriage Ceremonies (费用流)
- light oj 1011 Marriage Ceremonies(状压DP)
- light oj 1011 - Marriage Ceremonies (状压 dp)
- light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)
- Light OJ 1011 Marriage Ceremonies 状态压缩DP
- light oj 1011 marriage ceremonies (状压dp)
- lightoj 1011 Marriage Ceremonies
- LightOJ 1011 - Marriage Ceremonies
- LightOJ 1011 Marriage Ceremonies
- 1011 - Marriage Ceremonies
- LightOJ 1011 Marriage Ceremonies
- LightOJ 1011 - Marriage Ceremonies (dp)
- Marriage Ceremonies
- 1011 - Marriage Ceremonies[状态压缩dp]
- 【DP】 LightOJ 1011 - Marriage Ceremonies状压
- LightOJ 1011 Marriage Ceremonies【状压DP】
- Eclipse 连接MySql数据库总结
- 3到5人小团体环境的选择
- centos7开放端口-firewall-cmd
- Spring面试题
- 【读书笔记】访问控制符
- light 1011 - Marriage Ceremonies
- Qt 大数据列表展示
- 算法-快速排序(load)
- coderforces-701A-水题
- Android知识要点整理(18)----Gradle 之依赖管理
- 198-213. House RobberI&II
- C++的拷贝构造函数
- js中的this关键字详解
- Day6、双重循环、while..do循环、随机数、缓冲区、一位数组、判断质数、算出最大公约数