light 1011 状态压缩dp
来源:互联网 发布:java中1到100的质数 编辑:程序博客网 时间:2024/06/15 21:52
题意:给一个N*N的二维数组,从中选出N个数 要求不能同行同列, 求这N个数最大数的和 状态压缩。
每个i+1由上一个i推出来,这个直接一个for 搞一下就可以,剩下的就是枚举每个列。开一个dp[1<<16],二进制1表示我不在这一列中选取,0表示在这一列选取了数字。
(1<<n)-1表示初始化 全部都置1,然后从最后一行往前推就可以了。
异或表示去掉一个1,比如1000&1010 = 1000 然后1010^1000 = 0010,这样就去掉了一个1 ,就表示我要选择这列
m-1 就表示换到下一层。
#include <stdio.h>#include <string.h>#include <algorithm>#pragma warning (disable :4996)using namespace std;const int Max = 1 << 16;int dp[Max],a[20][20],n;int dfs(int x, int m){if (m == 0)return 0;if (dp[x])return dp[x];for (int i = 0; i < n; i++){if ((1 << i)&x)//判断第x列有没有被选取过dp[x] = max(dp[x], dfs((1 << i) ^ x, m - 1) + a[m - 1][i]);//如果没被选取,那么要从选这列和不选这列中选值最大的一个,异或符号表示把从里面去掉一个1,就表示选了这列,然后加上对应的权值就可以了}return dp[x];}int main(){int T;scanf("%d", &T);for (int t = 1; t <= T;t++){scanf("%d", &n);for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)scanf("%d", &a[i][j]);memset(dp, 0, sizeof(dp));printf("Case %d: %d\n", t, dfs((1 << n) - 1, n));}return 0;}
0 0
- light 1011 状态压缩dp
- Light OJ 1011 Marriage Ceremonies 状态压缩DP
- light oj 1018 状态压缩DP
- Light 1037 - Agent 47 (状态压缩dp)
- light oj 1021 状态压缩dp
- light oj 1147 背包dp+状态压缩 好题
- light oj 1057 Collecting Gold(状态压缩dp)
- ightoj 1011 状态压缩dp
- light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)
- light oj 1073 状态压缩dp+输出字典序最小的解
- Light OJ 1316 A Wedding Party 最短路+状态压缩DP
- Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
- POJ 2576 / Light OJ 1147 Tug of War 状态压缩DP
- lightoj 1011 (状态压缩dp)
- 1011 - Marriage Ceremonies[状态压缩dp]
- lightoj 1011 - Marriage Ceremonies(状态压缩dp)
- LightOJ-1011-Marriage Ceremonies [状态压缩][DP]
- 状态压缩dp
- 设计模式 - 工厂模式
- iOS开发利器-CocoaPods安装和使用教程
- [HDU 2222] Keywords Search AC自动机
- ADF Generator for Dynamic ADF BC and ADF UI
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- light 1011 状态压缩dp
- PHP:empty,isset,is_null,array(0),array(),array(""),0,"0","","null",NULL的总结
- Java多线程系列--“JUC锁”03之 公平锁(一)
- Spring AOP 使用注解为API引入新功能
- cloudstack_template_snapshot_volume
- Unity笔记 Stealth 实例详解
- Codeforces 148 D Bag of mice(概率DP)
- Virtualbox虚拟机网络配置(NAT + Host-only - Bridged)
- iOS中NSArray, NSSet, NSDictionary的使用