【题目分析】

其实直接状压就可以了。

但是有点闲,又写了一个可读性极差,智商低下,很(gou)好(pi)的代码

【代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
int dp[2][1<<21],n,a[20][20];
void print(int x)
{F(i,0,n)printf("%d",(x>>i)&1);}
int main()
{
while (scanf("%d",&n)!=EOF)
{
if (!n){printf("0\n");continue;}
F(i,0,n-1) F(j,0,n-1) scanf("%d",&a[i][j]);
int now=1,pre=0;
memset(dp[now],0,sizeof dp[now]);
F(i,0,n-1)
F(j,0,n-1)
{
now^=1;pre^=1;
memset(dp[now],0,sizeof dp[now]);
F(s,0,(1<<(n+1))-1)
{
// print(s); printf(" is %d to",dp[pre][s]);
if ((!(s&(1<<j)))&&(!(s&(1<<(j+1))))) dp[now][s|(1<<j)|(1<<(j+1))]=max(dp[now][s|(1<<(j+1))|(1<<j)],dp[pre][s]+a[i][j]);
dp[now][s&(~(1<<j))&(~(1<<(j+1)))]=max(dp[now][s&(~(1<<j))&(~(1<<(j+1)))],dp[pre][s]);
// printf("\n");
}
if (j==n-1)
{
now^=1;pre^=1;
memset(dp[now],0,sizeof dp[now]);
F(s,0,(1<<(n+1))-1)
{
// print(s); printf(" --> "); print(((s<<1)&((1<<(n+1))-1))); printf("\n");
dp[now][((s<<1)&((1<<(n+1))-1))]=max(dp[pre][s],dp[now][((s<<1)&((1<<(n+1))-1))]);
}
}
// printf("\n");
}
int ans=0;
F(s,0,(1<<(n+1))-1) ans=max(ans,dp[now][s]);
printf("%d\n",ans);
}
}

  

最新文章

  1. swift 键盘属性与事件
  2. react4 props 解析
  3. Context.managedQuery()和context.getContentResolver()获取Cursor关闭注意事项
  4. django 学习 --- 环境搭建
  5. C#、.NET和ASP.NET三者之间的区别
  6. 画图工具Graphviz安装配置
  7. form表单中的 action=./?&gt; 是什么意思
  8. [原创] 使用rpi + crontab + git 定时向bitbucket 推送 照片
  9. Unity 5.3.5f1 (32-bit) 的简单塔防游戏
  10. 【iOS】控件截图、MP4格式视频流和m3u8格式视频流截取某一帧功能的实现
  11. 用java理解程序逻辑小结
  12. 爬虫之urllib.error模块
  13. Myeclipse的使用技巧
  14. VUE之搭建脚手架
  15. ContentPresenter
  16. 南京邮电大学 CTF 逆向部分 Writeup
  17. Flask简介之简单应用
  18. 【kuangbin】计算几何部分最新模板
  19. JAVA 垃圾收集监控
  20. IIS-CS0016未能写入文件错误解决方法

热门文章

  1. 安卓ListView基础应用
  2. {ubuntu}乱七八糟重命名为1 2 3.....png
  3. IOS生成UUID
  4. 悦读FM客户端应用源码
  5. (五)maven之外置maven
  6. div+css实现几种经典布局的详解
  7. winhex与磁盘格式与 数据恢复
  8. faster rcnn需要理解的地方
  9. mysql启动提示mysql.host 不存在,启动失败的解决方法
  10. linux or msys2设置网络代理