频道栏目
首页 > 资讯 > 其他 > 正文

poj 1185(状压dp)

17-09-06        来源:[db:作者]  
收藏   我要投稿

poj 1185(状压dp)
和TSP一样经典的dp问题。
dp[i][S_pre][S_now]表示表示当前在i行状态诶S_now,上一行状态为S_pre的最大摆放个数。
对于合法的转移有:
dp[i][S_pre][S_now]=max(dp[i][S_pre][S_now],dp[i-1][S_pre_pre][S_pre]+num[i]);
总结一下棋盘类dp的一般步骤(纯属个人yy):
1.初始化合法状态
2.初始化地图
3.初始化dp数组(memset,第一行。。。)
4.状态转移
5.统计答案
注意:0/1串中0,1到底表示什么

多说一句:今晚国足加油!!!(′?ω?)?

#include
#include
#include
#include
using namespace std;
int n,m;
int dp[102][100][100],cur[102],num[100],st[100],st_sum;
char map[102][12];
inline bool ok(int x) {
    return !((x&(x<<1))|(x&(x<<2)));
}
inline int count(int x) {
    int cnt=0;
    while (x) {
        if (x&(-x)) ++cnt;
        x-=(x&(-x));
    }
    return cnt;
}
int main() {
//  freopen("poj 1185.in","r",stdin);
    while (~scanf("%d%d",&n,&m)&&(n||m)) {
        st_sum=0;
        for (int i=0;i<(1<
        
   
相关TAG标签
上一篇:python:1:数字类型相关函数
下一篇:微信小程序之兼容问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站