DFS的核心就是从一种状态出发,转向任意的一个可行状态,直到达到结束条件为止。(个人理解)

下面全是洛谷题,毕竟能找到测试点数据的OJ我就找到这一个....在其他OJ上直接各种玄学问题...

P1596 [USACO10OCT] 湖计数Lake Counting

DFS入门题,求连通块的。

 #include<iostream>
#include<algorithm>
using namespace std;
int dx[]={-,-,-, , , ,,};//方向
int dy[]={-, , ,-, ,-,,};
char mapp[][];//地图
int n,m; void dfs (int x,int y)
{
int nx,ny;
mapp[x][y]='.';//每进入一个状态就把这个点去掉,避免重复进入DFS
for (int i=;i<;i++)
{
nx=x+dx[i];
ny=y+dy[i];
if (nx<||nx>=n||ny<||ny>=m)
continue;
if (mapp[nx][ny]=='W')//如果‘.’也能走的话,那整块图都可以走了...
dfs(nx,ny);//进入到下一个状态
}
return ;
} int main()
{
scanf("%d %d",&n,&m);
int fin=;
for (int i=;i<n;i++)
scanf("%s",mapp[i]);//这样读一行
for (int i=;i<n;i++)
{
for (int j=;j<m;j++)
{
if (mapp[i][j]=='W')
{
dfs(i,j);//每次DFS一遍后,整块湖泊就算填平了
fin++;
}
}
}
printf("%d\n",fin);
return ;
}

P1506 拯救oibh总部

可以用上面一道题的思路代,方向从八向变为四向

要模拟一下海浪冲到总部上,这次读入地图的时候我给它先套了一圈“海浪”,从海浪中的一点出发,dfs一遍,如果是没有被保护的基地就被淹了,剩下的遍历一遍就行

 #include<iostream>
#include<algorithm>
using namespace std;
int n,m;
char mm[][];
int dx[]={,,,-};
int dy[]={,-,,};
void dfs(int x,int y)
{
mm[x][y]='*';
int nx,ny;
for (int i=;i<;i++)
{
nx=x+dx[i];
ny=y+dy[i];
if (nx>=&&nx<=n+&&ny>=&&ny<=m+&&mm[nx][ny]=='')
dfs(nx,ny);
}
return ;
}
int main()
{
int fin=;
for (int i=;i<;i++)
for (int j=;j<;j++)
mm[i][j]='';
cin>>n>>m;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
cin>>mm[i][j];
dfs(,);
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if (mm[i][j]=='')
fin++;
cout<<fin;
return ;
}

P1076 全排列问题

上面两道不需要管回溯,所以很简单

全排列最大的问题就是有一个回溯的过程

记一下这个题的运行过程,假如输一个3

1没被用过,选1,填1,进dfs(2)

找到2没被用过,选2填2,进dfs(3)

找到3没被用过,选3填3,进dfs(4)

满足输出条件,输出

此时,回到了dfs(3)的时候,现在把num[3]化为0

回到了dfs(2)的时候,把num[2]化为0,现在还在for循环中,转到num[3]=0,于是pai[2]=3

类推,输出完1 3 2之后,回到dfs(1),for循环到2,从2开头搜....

反正我真的想了很久没想通回溯,自己写一下就好了

#include <cstdio>
#include <iostream>
using namespace std;
int n;
int num[]={};
int pai[]={};
void dfs(int x)
{
if (x==n+)//就是n个格子都被填满的时候,这时候需要输出
{
for (int i=;i<=n;i++)
printf("%5d",pai[i]);
printf("\n");
}
else
{
for (int i=;i<=n;i++)
{
if (num[i]==)//找到了一个还没用的数字
{
num[i]=;//标记一下
pai[x]=i;//把数填进去
dfs(x+);//搜下一个数
num[i]=;//回溯
}
}
}
}
int main ()
{
scanf("%d",&n);
dfs();//从第一位开始搜起
return ;
}

咸鱼的ACM之路:DFS水题集的更多相关文章

  1. poj1564 Sum It Up dfs水题

    题目描述: Description Given a specified total t and a list of n integers, find all distinct sums using n ...

  2. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. 【wikioi】1229 数字游戏(dfs+水题)

    http://wikioi.com/problem/1229/ 赤裸裸的水题啊. 一开始我认为不用用完全部的牌,以为爆搜会tle.. 可是我想多了. 将所有状态全部求出,排序后暴力判断即可. (水题有 ...

  4. DFS水题 URAL 1152 False Mirrors

    题目传送门 /* 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝吧 回溯写挫 ...

  5. 中南大学2019年ACM寒假集训前期训练题集(入门题)

    A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500 ...

  6. 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)

    题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...

  7. 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)

    题目:http://www.cnblogs.com/ljc20020730/p/6937936.html 水题A:[AHOI2001]质数和分解 安徽省选OI原题!简单Dp. 一看就是完全背包求方案数 ...

  8. ACM:SCU 4437 Carries - 水题

    SCU 4437  Carries Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice  ...

  9. poj 1979 Red and Black(dfs水题)

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

随机推荐

  1. wireshark抓包思维导图---新手推荐

  2. 如何查看MySql的sql语句性能

    原文链接:https://blog.csdn.net/jwq101666/article/details/78561022Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通 ...

  3. 小cookie,大智慧

    Cookie是什么?cookies是你访问网站时创建的数据片段文件,通过保存浏览信息,它们使你的在线体验更加轻松. 使用cookies,可以使你保持在线登录状态,记录你的站点偏好,并为你提供本地化支持 ...

  4. 《自拍教程14》Linux的常用命令

    Linux操作系统, 包括我们大家熟知的Android, Ubuntu, Centos, Red Hat, UOS等. 这些常用命令先大概了解下,当然能熟练掌握并运用到实际工作中那最好不过了. 后续技 ...

  5. 02_TypeScript数据类型

    typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,写ts代码必须指定类型.   1.布尔类型(boolean) var flag:boolean = true;   2.数字 ...

  6. 维基逃离MySQL 力挺开源数据库 MariaDB

    近日全球著名百科类网站维基百科宣布,将不会再用MySQL数据库,据国外媒体报道,很多年,MySQL一直是热门的开源数据库,不过在被甲骨文收购后,面临闭源的风险.因此维基百科将切换到另外一款开源数据库M ...

  7. centos7搭建SVN并配置使用http方式访问SVN服务器

    一.检查SVN是否安装 centos7系统自带SVN # rpm -qa subversion [root@localhost ~]# rpm -qa subversion subversion--. ...

  8. nCompass-网络流量基础知识

    nCompass-网络流量基础知识 1.  流量分析基础知识 1.1  常见的流量分析方式: SNMP: 网管平台通过主动式获取设备接口流量信息. Flow:网络设备将穿越的数据流信息精简压缩打包. ...

  9. [Wpf学习] 1.传说中的Main

    原来的C#程序都有Main的,现在用vs新建一个Wpf项目,启动似乎变成App.xmal,前期项目中为了获取启动参数,很是折腾了一番: 1.先是修改App.xaml,添加StartUp事件 <A ...

  10. jQuery的动画以及扩展功能

    动画DOM及CSS操作 自定义动画 animate(最终css状态,时间) 这个最终css状态是一个对象 <!DOCTYPE html> <html lang="en&qu ...