咸鱼的ACM之路:DFS水题集
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水题集的更多相关文章
- poj1564 Sum It Up dfs水题
题目描述: Description Given a specified total t and a list of n integers, find all distinct sums using n ...
- ACM :漫漫上学路 -DP -水题
CSU 1772 漫漫上学路 Time Limit: 1000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- 【wikioi】1229 数字游戏(dfs+水题)
http://wikioi.com/problem/1229/ 赤裸裸的水题啊. 一开始我认为不用用完全部的牌,以为爆搜会tle.. 可是我想多了. 将所有状态全部求出,排序后暴力判断即可. (水题有 ...
- DFS水题 URAL 1152 False Mirrors
题目传送门 /* 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝吧 回溯写挫 ...
- 中南大学2019年ACM寒假集训前期训练题集(入门题)
A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500 ...
- 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)
题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...
- 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)
题目:http://www.cnblogs.com/ljc20020730/p/6937936.html 水题A:[AHOI2001]质数和分解 安徽省选OI原题!简单Dp. 一看就是完全背包求方案数 ...
- ACM:SCU 4437 Carries - 水题
SCU 4437 Carries Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practice ...
- poj 1979 Red and Black(dfs水题)
Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...
随机推荐
- Qt中字符串和数值之间的转换
来自<Qt5.9 C++开发指南> 普通数值和字符串之间的转换 一.从字符串转换为数值 QString类从字符串转换为整数的函数有: int QString::toInt(bool *ok ...
- Vue过滤器、生命周期函数和vue-resource
一.过滤器 使用例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- oracle-11g-R2监听文件配置
客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-, TNS:listener ...
- macos常用命令备查
常用命令 open . : 命令行打开文件夹 文件编辑 ps: 从一般模式进编辑模式,只需按i.I.a.A.o.O.r和R中某个键即可.当进入编辑模式时,在屏幕尾部会显示INSERT或REPLACE字 ...
- 【Python3爬虫】一次应对JS反调试的记录
一.前言简介 在前面已经写过关于 JS 反调试的博客了,地址为:https://www.cnblogs.com/TM0831/p/12154815.html.但这次碰到的网站就不一样了,这个网站并不是 ...
- js—DOM详情
1,什么是DOM,有什么作用 Document Object Model 文档对象模型,是一个html和xml文档的编程接口,可以将文档(html页面)解析成dom树,然后通过提供的dom接口来改变文 ...
- 前端html,css考点
1, 内联元素,块级元素相关知识点 参考链接:https://edu.aliyun.com/a/103378 (1)置换元素 概念:浏览器根据元素的标签和属性,来决定元素的具体显示内容.<img ...
- C# 如何实现完整的INI文件读写类
作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...
- C#设计模式学习笔记:(11)享元模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7792973.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第六个模式--享 ...
- iOS异常采用处理方式
iOS开发过程中我们经常会遇到异常问题 对异常的处理一般采用打印或者直接抛出.这样可以很方便我们调试过程有所参考,而且方便我们查看异常产生的位置信息 NSError(错误信息) 采用NSError的情 ...