sdut 2610 超级坑,但也超级巧妙地减枝
2017-04-04 16:28
232 查看
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,m,help[4][2]={1,0,0,1,0,-1,-1,0}; int a[20][20],map_s[20][20]; bool check(int x,int y,int i) { int xx=x+help[i][0],yy=y+help[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<m) if(a[xx][yy]) return true; else return false; return true; } int cal(int x,int y,int i) { int xx=x+help[i][0],yy=y+help[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<m) return a[xx][yy]; return 6; } void del(int x,int y,int num) { a[x][y]+=num; for(int i=0;i<4;i++) { int xx=x+help[i][0],yy=y+help[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<m) a[xx][yy]+=num; } } int flag=0; void dfs(int k) { int x=k/m,y=k%m,i,j; if(flag) return; if(k/m>=n) { for(int i=0;i<m;i++) if(a[n-1][i]) return; flag=1; return; } if(k/m==0) { map_s[x][y]=0; dfs(k+1); if(a[x][y]&&check(x,y,0)&&check(x,y,1)&&check(x,y,2)) { map_s[x][y]=1; del(x,y,-1); dfs(k+1); if(flag) return; del(x,y,1); } } else { int tp=cal(x,y,3); if(tp>1) return; else { if(tp) { if(a[x][y]>0&&cal(x,y,0)>0&&cal(x,y,1)>0&&cal(x,y,2)>0) { map_s[x][y]=1; del(x,y,-1); dfs(k+1); if(flag) return; del(x,y,1); } } else { map_s[x][y]=0; dfs(k+1); if(flag) return; } } } } int main() { int t,i,j,cas=0; scanf("%d",&t); while(t--&&scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%1d",&a[i][j]); flag=0; memset(map_s,-1,sizeof(map_s)); dfs(0); printf("Case %d:\n",++cas); for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%c",map_s[i][j]?'*':'.'); printf("\n"); } } return 0; } /* 1 2 2 11 22 */
相关文章推荐
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
- sdut2610---Boring Counting(离线+树状数组+离散化)
- sdut 1446 超级玛丽
- Boring Counting——【SDUT2610】主席树
- SDUT 2610 LED显示屏
- sdut2610--Boring Counting(二分+划分树)
- 巧妙建立隐藏的超级用户多种方法
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
- SDUT_2015寒假集训_动规递推_B-超级楼梯
- 超级玛丽制作揭秘5魔法攻击 类MYANIMAGIC
- SDUT 加密术
- Win7旗舰版如何激活超级管理员权限
- JSON超级快速入门 后续 搭建REST框架技巧
- 基于netty的项目中使用protobuf,巧妙定义proto完成不同消息的编码和解码处理 .
- sdut 二叉排序树
- 巧妙设置Vista任务栏和开始菜单的属性
- SDUT 小鑫の日常系列故事(七)——小纸条
- POJ 生日蛋糕(DFS 巧妙剪枝)
- VMware网络设置详解 打造超级虚拟网络