P1649 [USACO07OCT]障碍路线Obstacle Course

裸的dfs,今天学了一个新招,就是在过程中进行最优性减枝。

#include<bits/stdc++.h>
using namespace std;
int n,sx,sy,ex,ey,ans=;
char a[][];
int d[][];
int x[]={-,,,};
int y[]={,,,-};
bool vis[][]; void dfs(int nx,int ny,int dir,int num)
{
if(nx>n||nx<||ny>n||ny<||vis[nx][ny]||ans==)
return;
if(a[nx][ny]=='x')
return;
if(num>=ans)
return ;
if(num>d[nx][ny])
return;
d[nx][ny]=num;
if(nx==ex&&ny==ey)
{
if(num<ans)
ans=num;
return ;
}
for(int i=;i<;i++)
{
if((abs(i-dir)==||abs(i-dir)==)&&nx+x[i]>&&ny+y[i]>&&!vis[nx+x[i]][ny+y[i]])
{
vis[nx][ny]=true;
dfs(nx+x[i],ny+y[i],i,num);
vis[nx][ny]=false;
}
else
if(!vis[nx+x[i]][ny+y[i]]&&nx+x[i]>&&ny+y[i]>)
{
vis[nx][ny]=true;
dfs(nx+x[i],ny+y[i],i,num+);
vis[nx][ny]=false;
}
}
} int main()
{
cin>>n;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
cin>>a[i][j];
if(a[i][j]=='A')
sx=i,sy=j;
if(a[i][j]=='B')
ex=i,ey=j;
} for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
d[i][j]=;
}
for(int i=;i<;i++)
dfs(sx+x[i],sy+y[i],i,);
if(ans!=)
cout<<ans;
else
cout<<-;
return ;
}

障碍路线Obstacle Course的更多相关文章

  1. bzoj1644 / P1649 [USACO07OCT]障碍路线Obstacle Course

    P1649 [USACO07OCT]障碍路线Obstacle Course bfs 直接上个bfs 注意luogu的题目和bzoj有不同(bzoj保证有解,还有输入格式不同). #include< ...

  2. 洛谷 P1649 [USACO07OCT]障碍路线Obstacle Course

    P1649 [USACO07OCT]障碍路线Obstacle Course 题目描述 Consider an N x N (1 <= N <= 100) square field comp ...

  3. Luogu P1649 [USACO07OCT]障碍路线Obstacle Course

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  4. P1649 [USACO07OCT]障碍路线Obstacle Course

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  5. [USACO07OCT]障碍路线Obstacle Course

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  6. 洛谷P1649 【[USACO07OCT]障碍路线Obstacle Course】

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  7. [USACO07OCT]障碍路线 & yzoj P1130 拐弯 题解

    题意 给出n* n 的图,A为起点,B为终点,* 为障碍,.可以行走,问最少需要拐90度的弯多少次,无法到达输出-1. 解析 思路:构造N * M * 4个点,即将原图的每个点分裂成4个点.其中点(i ...

  8. [洛谷1649]障碍路线<BFS>

    题目链接:https://www.luogu.org/problem/show?pid=1649 历经千辛万苦,我总算是把这个水题AC了,现在心里总觉得一万只草泥马在奔腾: 这是一道很明显的BFS,然 ...

  9. UVA 1600 Patrol Robot(机器人穿越障碍最短路线BFS)

    UVA 1600 Patrol Robot   Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   ...

随机推荐

  1. iOS视频流开发(1)—视频基本概念

    iOS视频流开发(1)-视频基本概念 手机比PC的优势除了便携外,她最重要特点就是可以快速方便的创作多媒体作品.照片分享,语音输入,视频录制,地理位置.一个成功的手机APP从产品形态上都有这其中的一项 ...

  2. 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)

    0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...

  3. RNN(1) ------ “理解LSTM”(转载)

    原文链接:http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这 ...

  4. 说说流控制(RTS/CTS/DTR/DSR 你都明白了吗?)【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_129041.HTM 以前写的博文,转过来 ============== 先引用一篇网文,作者不详,因几个地方都说自己是 ...

  5. 基于内容的图片检索CBIR简介

    原文地址:http://blog.csdn.net/davebobo/article/details/53171311 传统的图像检索过程,先通过人工对图像进行文字标注,再利用关键字来检索图像,这种依 ...

  6. RestTemplate的使用

    1.postForObject :传入一个业务对象,返回是一个String 调用方: BaseUser baseUser=new BaseUser(); baseUser.setUserid(user ...

  7. Java枚举的小知识点

    enum 是jdk1.5引入的,使用它可以创建枚举类型,就像使用class创建类一样. enum关键字创建的枚举类型默认是java.lang.Enum(一个抽象类)的子类 用法1 常量 一般定义常量都 ...

  8. java多线程快速入门(四)

    通过匿名内部类的方法创建多线程 package com.cppdy; //通过匿名内部类的方法创建多线程 public class ThreadDemo2 { public static void m ...

  9. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

    摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen s ...

  10. SqlServer基础语法(二)

    先看一下腰实现的功能: