zoukankan      html  css  js  c++  java
  • zoj 3471(状态压缩)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257

    dp[state]表示当前状态为state时的所能获得的最大值,这里我用1表示气球存在,0表示消失,由于状态转移是从有到无,于是最外层循环于是从大到小,这与一般的状态要所略有区别。

    方程为:dp[s ^ (1 << j)] = max(dp[s ^ (1 << j)], dp[s] + map[i][j])(i撞击j之后j消失);

     1 /*************************************************************************
     2     > File Name: zoj3471.cpp
     3     > Author: syhjh
     4     > Created Time: 2014年03月09日 星期日 18时19分25秒
     5  ************************************************************************/
     6 #include <iostream>
     7 #include <cstdio>
     8 #include <cstring>
     9 #include <algorithm>
    10 using namespace std;
    11 
    12 int dp[1 << 12];
    13 int map[12][12];
    14 int N;
    15 
    16 int main()
    17 {
    18     while (cin >> N && N != 0) {
    19         for (int i = 0; i < N; i++)
    20             for (int j = 0; j < N; j++)
    21                 cin >> map[i][j];
    22         memset(dp, 0, sizeof(dp));
    23         for (int s = (1 << N) - 1; s >= 0; s--) {
    24             for (int i = 0; i < N; i++) if (s & (1 << i)) {
    25                 for (int j = 0; j < N; j++) if (i != j && (s & (1 << j))) {
    26                     dp[s ^ (1 << j)] = max(dp[s ^ (1 << j)], dp[s] + map[i][j]);
    27                 }
    28             }
    29         }
    30         int ans = 0;
    31         for (int s = 0; s < (1 << N); s++) {
    32             ans = max(ans, dp[s]);
    33         }
    34         cout << ans << endl;
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    ES6学习笔记<一> let const class extends super
    js_字符转Unicode
    (转)利用 SVG 和 CSS3 实现有趣的边框动画
    事件委托
    模拟操作
    jQUery动画
    jQUery事件
    jQuery的单选,复选,下拉
    jQuery中对属性的增删改查
    jQuery中其他
  • 原文地址:https://www.cnblogs.com/wally/p/3590383.html
Copyright © 2011-2022 走看看