LightOJ1011Marriage Ceremonies(状压DP)
2017-08-02 16:01
134 查看
题意:输入n 输入n行n列 从n行中找出n个数 保证任意两个都不在同一列 求这些数的和。
#include<bits/stdc++.h> using namespace std; const int maxn = 17; int a[maxn][maxn]; int dp[17][(1<<16)]; int cal(int x) { int len = 0; while(x) { if(x & 1) len++; x >>= 1; } return len; } int main() { int T, n; scanf("%d", &T); for(int kase = 1; kase <= T; kase++) { scanf("%d", &n); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) scanf("%d", &a[i][j]); memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; i++) for(int j = 0; j <= (1<<n) - 1; j++) { if(cal(j) != i-1) continue; for(int k = 0; k < n; k++) { if((j&(1<<k)) == 0) { dp[i][j^(1<<k)] = max(dp[i][j^(1<<k)], dp[i-1][j] + a[i][n-k]); } } } printf("Case %d: %d\n", kase, dp [(1<<n)-1]); } return 0; }
相关文章推荐
- Poj3254 Corn Fields (状压Dp)
- 【NOIP2017】宝藏(状压DP)
- Codeforces 599E Sandy and Nuts 状压DP
- hdu 4336 概率DP 状压DP
- HDU 1565 方格取数(1)(状压dp)
- BZOJ 1072 SCOI2007 排列perm 状压DP
- Hdoj-1074-状压dp
- hihocoder 1044 (状压dp)
- [校内模拟]binary(状压DP)
- bzoj 1072 状压DP
- [BZOJ3717]-[PA2014]Pakowanie-状压DP
- 【BZOJ1055】[HAOI2008]玩具取名【区间DP】【状压】
- POJ 1185 炮兵阵地 (状压DP)
- POJ 3254-状压dp
- BZOJ 2064: 分裂 状压dp
- Hdu 4568 Hunter(状压dp)
- hdu 1074 Doing Homework(状压DP)
- HDU 2825 Wireless Password (AC自动机 + 状压dp)
- hdu 2510 符号三角形 (状压dp打表存入文件,O(1))
- codeforces 107C Arrangement (状压dp)