题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539

思路:跟poj1185简直就是如出一辙!

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int row[];
int dp[][][];
int s[<<];
int num[<<];
int n,m,state,ans,x; int Get_Num(int x)
{
int cnt=;
while(x>){
cnt++;
x=x&(x-);
}
return cnt;
} int main()
{
while(~scanf("%d%d",&n,&m)){
memset(row,,sizeof(row));
memset(dp,,sizeof(dp));
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%d",&x);
if(!x)row[i]=(row[i]<<)|;
else row[i]<<=;
}
}
state=;
for(int i=;i<(<<m);i++){
if(i&(i<<))continue;
s[state]=i;
num[state++]=Get_Num(i);
}
for(int i=;i<state;i++){
if(s[i]&row[])continue;
dp[][i][]=num[i];
}
for(int i=;i<n;i++){
for(int j=;j<state;j++){
if(s[j]&row[i])continue;
for(int k=;k<state;k++){ //i-1行信息
if((s[j]&(s[k]>>))||(s[j]&(s[k]<<)))continue;//曼哈顿距离为2冲突
for(int l=;l<state;l++){ //i-2行信息
if(s[j]&s[l])continue;
if((s[k]&(s[l]>>))||(s[k]&(s[l]<<)))continue;//曼哈顿距离为2冲突
dp[i][j][k]=max(dp[i][j][k],dp[i-][k][l]+num[j]);
}
}
}
}
ans=;
for(int i=;i<state;i++){
for(int j=;j<state;j++){
ans=max(ans,dp[n-][i][j]);
}
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. sql server ,sql语句,练习笔记
  2. loadrunner通过C语言实现字符的替换(只能替换单个字符,慎用)
  3. 如何修改WAMP中mysql默认空密码 以及修改时报错的处理方法
  4. Elasticsearch 相关名词理解
  5. Android --资料集合
  6. Managing Hierarchical Data in MySQL
  7. SuperSocket快速入门(三):实现你的AppServer和AppSession
  8. iOS_21团购_发送请求【点评】数据
  9. freemarker 空白处理
  10. Spark入门实战
  11. CentOS下内存使用率查看
  12. js重点--匿名函数
  13. tftp--实现服务器与客户端的下载与上传【转】
  14. centos7安装pip
  15. [C#] LINQ之Join与GroupJoin
  16. 广工赛-hdu6470矩阵快速幂
  17. STL用法大全
  18. ActiveReports 大数据分析报告:2018中国电影再次迎来黄金时代
  19. Linux之常识小结[版本]
  20. 学习笔记之HTML 教程 | 菜鸟教程

热门文章

  1. Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)
  2. 织梦dedecms修改include和plus重命名提高安全性防漏洞注入挂马
  3. Mac下忘记了phpAdmin设置的MySQL密码
  4. C# OO(初级思想)
  5. java 解析webservice 中的soapheader
  6. Rabbitmq消息队列(四) 发布订阅
  7. sklearn word2vec 实践
  8. 点滴积累【JS】---JS小功能(offsetLeft实现图片滚动效果)
  9. SCUT个人整理的常见问题
  10. 分布式系统的CAP和BASE理论