HDU_1175_dfs
http://acm.hdu.edu.cn/showproblem.php?pid=1175
dfs(x,y,i,num),xy表示位置,i表示方向,num表示转向次数,num=2时候的剪枝很重要。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[][],vis[][],n,m,endx,endy,dis[][] = {{-,},{,-},{,},{,}},flag; void dfs(int x,int y,int dir,int num)
{
if(flag) return;
if(x == endx && y == endy)
{
flag = ;
return;
}
if(num == )
{
if(dir == ||dir == )
{
if(y != endy) return;
}
else
{
if(x != endx) return;
}
}
int xx,yy;
for(int i = ;i < ;i++)
{
xx = x+dis[i][];
yy = y+dis[i][];
if(xx < || xx > n || yy < || yy > m || vis[xx][yy]) continue;
if(xx == endx && yy == endy || a[xx][yy] == )
{
vis[xx][yy] = ;
if(i == dir) dfs(xx,yy,dir,num);
else if(num < )dfs(xx,yy,i,num+);
vis[xx][yy] = ;
}
} }
int main()
{
while(cin >> n >> m && n &&m)
{
flag = ;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) cin >> a[i][j];
}
int num;
cin >> num;
while(num--)
{
int beginx,beginy;
cin >> beginx >> beginy >> endx >> endy;
if(beginx == endx && beginy == endy || a[beginx][beginy] != a[endx][endy] || a[beginx][beginy] == )
{
cout << "NO" << endl;
continue;
}
flag = ;
memset(vis,,sizeof(vis));
for(int i = ;i < ;i++)
{
if(!flag) dfs(beginx,beginy,i,);
}
if(flag) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
return ;
}
HDU_1175_dfs的更多相关文章
随机推荐
- (三)Django模板语言
一.字典,列表,类在template模板中的使用 在视图函数中,即views.py中进行传值操作,可通过render方法,进行传值 from django.shortcuts import rende ...
- spring boot学习笔记(2)
Spring boot集成mybatis的三种方式 一.XML文件 在pom文件里面引入mybatis和数据库的依赖 在application.properties中加入数据源配置 其他和ssm配置完 ...
- cogs 1829. [Tyvj 1728]普通平衡树 权值线段树
1829. [Tyvj 1728]普通平衡树 ★★★ 输入文件:phs.in 输出文件:phs.out 简单对比时间限制:1 s 内存限制:1000 MB [题目描述] 您需要写一种数 ...
- 快速幂模板Super
//求x^nint ans=1;while(n){ if(n&1) ans=ans*x; x*=x; n>>=1;} 快速幂就是快速算底数的n次幂.其时间复杂度为 O(logN), ...
- GitHub进阶之利用Git远程仓库篇
#在上一篇文章,相信大家对GitHub已经有了一个基础的理解 接下来我们来学习一下如何利用git来远程仓库 一,git是什么 git:一个免费的开源版本控制软件 用途:利用Git管理GitHub上的代 ...
- Java入门 - 高级教程 - 06.邮件收发
原文地址:http://www.work100.net/training/java-email.html 更多教程:光束云 - 免费课程 邮件收发 序号 文内章节 视频 1 概述 2 发送一封简单的邮 ...
- SEVERE: Unable to process Jar entry [avassist xxxx.class]
<bean id="sqlSessionTemplate2" class="org.mybatis.spring.SqlSessionTemplate" ...
- 查看jvm内存信息
Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx Runtime.getRuntime().freeMemory(); //当前JVM空闲内存 Run ...
- Java基础语法和基本数据类型
Java基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 对象:对象是类的一个实例,有状态(属性)和行为(方法). 类:类是一个模板,他描述一类对象的行为 ...
- 18年第一弹射 和网络有关; 艾曲塞嗯诶系列篇 san
62: 管理员想要更新 AR2200路由器的VRP, 正确的方法: 1)管理员把 AR2200 配置为FTP客户端,通过FTP来传输VRP软件 2)管理员把AR2200 配置为FTP服务器,通过FTP ...