题目链接:http://codevs.cn/problem/1049/

昨天的测试题里没有打出那可爱的迭代深搜,所以今天就来练一练。

这道题其实我看着有点懵,拿着题我就这状态↓

然后我偷偷瞄了一眼hzwer的博客,啊♂,恍然大悟。。。。。。。

【思路】

根据迭代深搜的定义,我们这道题枚举要补上的黑格子数,最多是25格,所以循环ans从0到25就行,然后迭代,

只是在每一个坐标(x,y)的扩展中,下一次的扩展是当前这第x行剩下的和接下来的几行(避免重复操作)

然后就是在染色格子等于ans时check一下。。。。。

check就是搜寻一次全图,当第一次找到黑格子时就从这个黑格子开始把它能到达的格子全部变成白色,然后如果还能找到黑格子,说明黑格子没有全部连通

这是一个迭代深搜的入门题。。。不是很难,光看代码就可以理解了

 #include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>
#include<algorithm>
#include<iostream>
#define maxn 6
using namespace std; const int dx[]={,,-,,},dy[]={,,,,-};
int map[][],ans,flag,ins[][];
char ch[]; void del(int x,int y)
{
for(int i=;i<=;i++)
{
int nx=x+dx[i],ny=y+dy[i];
if(nx<||nx>||ny<||ny>)continue;
if(ins[nx][ny]==)
{
ins[nx][ny]=;del(nx,ny);
}
}
} int check()
{
int tru=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
ins[i][j]=map[i][j];
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
if(ins[i][j]==)
{
if(tru==)return ;
else{
del(i,j);tru=;
}
}
}
return ;
} void dfs(int x,int y,int k)
{
if(k==ans){
if(check()){flag=;return;}
}
if(flag==||x>||y>)return;
for(int i=y;i<=;i++)
{
if(map[x][i]==){
map[x][i]=;
if(i==)dfs(x+,,k+);
else dfs(x,i+,k+);
map[x][i]=;
}
}
for(int i=x+;i<=;i++)
for(int j=;j<=;j++)
{
if(map[i][j]==){
map[i][j]=;
if(j==)dfs(i+,,k+);
else dfs(i,j+,k+);
map[i][j]=;
}
}
return;
} int main()
{
for(int i=;i<=;i++)
{
scanf("%s",ch+);
for(int j=;j<=;j++)
{
map[i][j]=ch[j]-'';
}
}
for(ans=;ans<=;ans++)
{
dfs(,,);
if(flag==)
{
printf("%d\n",ans);return ;
}
} }

最新文章

  1. iOS开源项目周报1215
  2. 解决motools和jquery之间的冲突
  3. 红黑树/B+树/AVL树
  4. Android-adb指令
  5. c语言迷宫游戏的实现
  6. SQL怎么输出前n个记录? n是中间计算得到的,不支持变量传递
  7. 4、总结:基于Oracle Logminer数据同步
  8. CentOS6.5配置vim使支持Python
  9. sed 命令详解
  10. mock.js使用总结
  11. python中的__metaclass__
  12. hinernate-实体对象的3种状态
  13. 【分享】JS如何为复制的Web文本添加其他信息
  14. SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法
  15. Java线程生命周期
  16. 基于cdh5.10.x hadoop版本的apache源码编译安装spark
  17. 月赛 &amp;&amp; SX_ACM 惨痛教训
  18. H5开发APP考题和答案
  19. gl.h included before glew.h
  20. jquery -- checkbox选中无选中状态

热门文章

  1. Java基础--方法的定义
  2. VGG16等keras预训练权重文件的下载及本地存放
  3. Xml反序列化记录
  4. 记录:更新VS2019后单元测试运行卡住无法运行测试的问题。
  5. vue用template还是JSX?
  6. 登录页面判断session退出登录清空session
  7. Core + Vue 后台管理基础框架2——认证
  8. 设计模式-15命令模式(Command Pattern)
  9. Jenkins构建项目帮助文档
  10. ggplot2(6) 标度、坐标轴和图例