CCF 模拟E DFS深搜
http://115.28.138.223:81/view.page?opid=5
这道题问的很怪. 起点DFS,每一个点还要DFS一次,统计不能到终点的个数
数据量不大这样做也能AC
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int x,y,ax,ay,bx,by;//'#'0, '+'1, '-'2, '|'3, '.'4, 'S', 'T'
int x1[]={,-,, };
int y1[]={, ,,-};
int d[][],lable[][],labll[][];
int numb,shit=;
void ddfs(int xx,int yy)
{
if(shit==){return;}
if(xx==by&&yy==bx){shit=;return;}
if(labll[xx][yy]==||d[xx][yy]==||xx<||yy<){return;}
labll[xx][yy]=;
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
ddfs(xx+x1[i],yy+y1[i]);
if(shit==){return;}
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
ddfs(xx+x1[i],yy+y1[i]);
if(shit==){return;}
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
ddfs(xx+x1[i],yy+y1[i]);
if(shit==){return;}
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
ddfs(xx+x1[i],yy+y1[i]);
if(shit==){return;}
}
}
return;
}
void dfs(int xx,int yy)//3 0
{
if(lable[xx][yy]==||d[xx][yy]==||xx<||yy<){return;}
lable[xx][yy]=;
for(int i=;i<y;i++)
{
for(int j=;j<x;j++)
{
labll[i][j]=;
}
}
shit=;
ddfs(xx,yy);
if(shit==){numb++;}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
dfs(xx+x1[i],yy+y1[i]);
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
dfs(xx+x1[i],yy+y1[i]);
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
dfs(xx+x1[i],yy+y1[i]);
}
}
if(d[xx][yy]==)
{
for(int i=;i<;i++)
{
dfs(xx+x1[i],yy+y1[i]);
}
}
return;
} int main()
{
while(cin>>y>>x)
{
char c;
numb=;
for(int i=;i<y;i++)
{
for(int j=;j<x;j++)
{
cin>>c;
if(c=='S'){d[i][j]=;ax=j;ay=i;}
if(c=='T'){d[i][j]=;bx=j;by=i;}
if(c=='#'){d[i][j]=;}
if(c=='+'){d[i][j]=;}
if(c=='-'){d[i][j]=;}
if(c=='|'){d[i][j]=;}
if(c=='.'){d[i][j]=;}
}
}
shit=;
ddfs(ay,ax);
if(shit==){cout<<"I'm stuck!"<<endl;continue;}
dfs(ay,ax);
cout<<numb<<endl;
for(int i=;i<y;i++)
{
for(int j=;j<x;j++)
{
d[i][j]=lable[i][j]=;
}
}
}
return ;
}
CCF 模拟E DFS深搜的更多相关文章
- CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】
[编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色 ...
- DFS 深搜专题 入门典例 -- 凌宸1642
DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 有 n 件物品 ...
- 【DFS深搜初步】HDOJ-2952 Counting Sheep、NYOJ-27 水池数目
[题目链接:HDOJ-2952] Counting Sheep Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- DFS深搜——Red and Black——A Knight's Journey
深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...
- Red and Black(DFS深搜实现)
Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...
- poj 2386:Lake Counting(简单DFS深搜)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18201 Accepted: 9192 De ...
- UVA 165 Stamps (DFS深搜回溯)
Stamps The government of Nova Mareterrania requires that various legal documents have stamps attac ...
- HDU_1241 Oil Deposits(DFS深搜)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- 解救小哈——dfs深搜
问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...
随机推荐
- 20145212 《Java程序设计》第4周学习总结
20145212 <Java程序设计>第4周学习总结 教材学习内容总结 第六章知识点: 1.继承基本上就是避免多个类间重复定义的行为. 2.子类继承父类,通过继承,我们可以避免类间的重复定 ...
- Codeforces Round #371 (Div. 2)B. Filya and Homework
题目链接:http://codeforces.com/problemset/problem/714/B 题目大意: 第一行输入一个n,第二行输入n个数,求是否能找出一个数x,使得n个数中的部分数加上x ...
- 入门:PHP:hello world!
<?php echo 'hello'."\n"." world!"."good night!";//2016.09.18 22:57? ...
- hasClass addClass removeClass
//函数有class function hasClass(ele,cls){ return -1<(" "+ele.className+" ").inde ...
- ecshop 如果缩略图为空,使用默认图片
引用:$row['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']); lib_common.php /** * 重新获 ...
- Auto generating Entity classes with xsd.exe for XML Serialization and De-Serialization
More info here: http://blogs.msdn.com/b/yojoshi/archive/2011/05/14/xml-serialization-and-deserializa ...
- STM32堆栈溢出
在使用STM32读取SD Card的文件时,总是会卡死在读函数那里 res = f_read(&fsrc, gbuffer, sizeof(gbuffer)-1, &br); 而且出现 ...
- MD5 (摘要加密)
MD5 约定 同样的密码,同样的加密算法,每次加密的结果是不一样 密码方案 方案一:直接 MD5 pwd = pwd.md5String; 非常不安全 方案二 MD5 + 盐 pwd = [pwd s ...
- Xcode 历史版本
概述[编辑] Xcode前身是继承自NeXT的Project Builder. The Xcode suite包含有GNU Compiler Collection自由软件(GCC.apple-darw ...
- 【转载】linux lftp命令 详解
站在前辈的肩上,别人会的你要尽快的学会练好! lftp比ftp要好用,mget的时候,迹象要比较明显的迹象,比如下载进度! linux lftp命令 1.登录ftp代码:lftp 用 ...