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的更多相关文章

随机推荐

  1. JVM系列六(自定义插入式注解器).

    一.概述 从前面 文章 中我们可以了解到,javac 的三个步骤中,程序员唯一能干预的就是注解处理器部分,注解处理器类似于编译器的插件,在这些插件里面,可以读取.修改.添加抽象语法树中的任意元素.因此 ...

  2. Serverless 设计理念:从头创建品牌标识

    本文首发于 Serverless 中文网,译者:Aceyclee.如需转载,请保留原作者和出处. 如何在开源技术社区中做设计?本文来自 Serverless 团队中首席设计的分享 -- 展现了设计过程 ...

  3. react 表单(受控组件和非受控组件)

    我们知道表单元素与其他的普通DOM元素来说是不一样的,它们保存了自己的一些状态. 我们主要说的就是表单元素中的受控组件和非受控组件. 受控组件就是这个组件的状态是我们(react)控制的,这个组件的行 ...

  4. 一个C#开发者重温Java的心路历程

    前言 我们都知道软件开发是工科,不是理科:本质上和电工.钳工是一样的. 也就是说,软件技术成长也与电工.钳工的技术成长是一样的,靠的是练,而不是学. 所以,很多时候,我们称应届大学生是一张白纸,啥也不 ...

  5. cogs 615. 韩国明星 STL map

    615. 韩国明星 ★★   输入文件:star.in   输出文件:star.out   简单对比时间限制:2 s   内存限制:128 MB [问题描述] 在LazyCat同学的影响下,Roby同 ...

  6. 《C# 爬虫 破境之道》:概述

    第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...

  7. 【转】程序员"青春饭"问题之我见

    1. 问题描述问题1: 什么是程序员?在本文中程序员的定义为: 拥有编程技能,在IT.互联网公司打工的IT从业人员.程序员与很多行业最大的不同是该行业的形成时间短:1954年第一台计算机才诞生,而中医 ...

  8. Activiti结束事件(End Event)

    Activiti结束事件(End Event) 作者:Jesai -2017.08.03T01:03 曾经,黑夜多么漫长,八月雨扰眠,缘何? 声明:版权所有,如需引用请注明出处,如发现抄袭,必追究法律 ...

  9. MyBatis.多条件排序

    <if test="orderBy != null"> order by <choose> <when test='orderBy=="ag ...

  10. JS前端时间格式化

    var dateTime = new Date(tree_time); tree_time = dateTime.getFullYear() + '-'+ (dateTime.getMonth()+1 ...