【算法】状压DP

【题解】对于上一行的每个状态,每行进行DFS。

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=,maxN=,MOD=;
ll f[][maxN];
int n,m,x,h;
bool map[maxn][maxn];
void dfs(int p,int now,int pre){
if(p==m){
f[x][now]=(f[x][now]+f[-x][pre])%MOD;
}
else{
if(!((<<(p-))&now)&&!((<<p)&pre)&&map[h][p+])dfs(p+,now|(<<p),pre);
dfs(p+,now,pre);
}
}
int main(){
scanf("%d%d",&n,&m);
int u;
for(int i=;i<=n;i++)for(int j=;j<=m;j++){
scanf("%d",&u);
map[i][j]=u;
}
x=;
memset(f[x],,sizeof(f[x]));
f[x][]=;
for(int i=;i<=n;i++){
x=-x;h=i;
memset(f[x],,sizeof(f[x]));
for(int j=;j<(<<m);j++)if(f[-x][j]){
dfs(,,j);
}
}
long long ans=;
for(int j=;j<(<<m);j++)ans=(ans+f[x][j])%MOD;
printf("%lld",ans);
return ;
}

最新文章

  1. H5页面微信分享和手Q分享设置
  2. 程序猿每个VPN真卡手
  3. [OC Foundation框架 - 16] NSObject和反射
  4. xcode6 自定义UITabbarController
  5. MyEclipse使用经验总结
  6. SQL*Net message from client
  7. 一步一步写算法(之prim算法 上)
  8. U3D脚本开发基础
  9. sqlserver 查询所有表及记录行数
  10. Linux下创建root权限的账号osadmin
  11. C# String StringBuilder 区别
  12. 一个基于H5audio标签的vue音乐播放器
  13. 回收 PV - 每天5分钟玩转 Docker 容器技术(152)
  14. vuepress 学习心得
  15. bzoj2560串珠子(子集dp)
  16. js之搜索框
  17. Shell脚本中的并发(转)
  18. package.json 中 npm 依赖包版本前的符号的意义
  19. js创建表单并提交
  20. iOS边练边学--UITableViewCell的常见属性设置

热门文章

  1. 深入理解计算机系统(1)--hello world程序的生命周期
  2. Python学习笔记(二)一一一字典总结
  3. jmeter如何连接数据库
  4. 手动监控Windows端口
  5. Google无法离线安装扩展程序
  6. 5.爬虫 requests库讲解 高级用法
  7. BZOJ 2597 剪刀石头布(最小费用最大流)(WC2007)
  8. C#-WinForm控制输入框只接受数字输入
  9. python的运算符及优先级与python的表达式
  10. PAT 甲级 1002 A+B for Polynomials