POJ3254 Corn Fields(状压DP)

打印 上一主题 下一主题

主题 532|帖子 532|积分 1596

dp[j]表示第i行第j个状态时,前i行得到的方案数,该状态可由前一行的状态转移过来。
本题重点在于合法性检测:每一行都用一个二进制数表示,1.二进制数不能有相邻的1;2.要和原地图匹配;3.上下两行不能有冲突。
预处理地图时将0换成1,方便进行2号检测,用位运算&可以实现。
[code] 1 #include 2 #include 3 using namespace std; 4 #define mod 100000000 5 int m,n,top=0; 6 int state[600];//储存合法状态  7 int dp[20][600];//dp[j]表示第i行,第j种编号时,前i行的可行方案数  8 int cur[20]; 9 10 bool check(int x){//有相邻的1则不合法 11     if(x&x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表