BNUOJ 4358 左手定则 搜索

题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=4358

一道很好的搜索题,要注意DFS函数的写法,特别是return的写法。

View Code
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 char map[105][105];
 6 int a[105][105][4];
 7 int sx,sy,tx,ty,flag,n,m;
 8 int px[4][4]=
 9 {
10     0,-1,0,1,
11         0,1,0,-1,
12         1,0,-1,0,
13         -1,0,1,0
14 };
15 int py[4][4]=
16 {
17     -1,0,1,0,
18         1,0,-1,0,
19         0,-1,0,1,
20         0,1,0,-1
21 };
22 int f[4][4]=
23 {
24     2,0,3,1,
25         3,1,2,0,
26         1,2,0,3,
27         0,3,1,2
28 };
29 void DFS(int x,int y,int v)
30 {
31     int i,xx,yy,tv;
32     if(flag)return ;
33     if(x==tx&&y==ty)
34     {
35         flag=1;
36         return ;
37     }
38     for(i=0;i<4;i++)
39     {
40         xx=x+px[v][i];
41         yy=y+py[v][i];
42         if(xx<1||xx>n||yy<1||yy>m||map[xx][yy]=='#')continue ;
43         tv=f[v][i];
44         if(a[xx][yy][tv]==-1)
45         {
46             a[xx][yy][tv]=1;
47             DFS(xx,yy,tv);
48         }
49         return ;
50     }
51 }
52 int main()
53 {
54     int i,j,v;
55     char ch;
56     while(scanf("%d%d",&n,&m)!=EOF)
57     {
58         
59         for(i=1;i<=n;i++)
60             for(j=1;j<=m;j++)
61             {
62                 //scanf("%c",&map[i][j]);
63                 cin>>map[i][j];
64                 if(map[i][j]=='S')
65                 {
66                     sx=i;
67                     sy=j;
68                     
69                 }
70                 if(map[i][j]=='T')
71                 {
72                     tx=i;
73                     ty=j;
74                 }
75             }
76        cin>>ch;
77         //    scanf("%c",&ch);
78             if(ch=='N')v=0;
79             else if(ch=='S')v=1;
80             else if(ch=='W')v=2;
81             else v=3;
82             flag=0;
83             memset(a,-1,sizeof(a));
84             a[sx][sy][v]=1;
85             DFS(sx,sy,v);
86             if(flag)printf("YES\n");
87             else printf("NO\n");
88     }
89     return 0;
90 }

转载于:https://www.cnblogs.com/zhaoguanqin/archive/2012/04/16/2452047.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS安装Confluence Wiki步骤

参考&#xff1a;http://supernetwork.blog.51cto.com/2304163/1187066参考&#xff1a;http://yjiang.tk/?p1085需要的文件CentOS-6.5-x86_64-minimal.isojre-7u67-linux-x64.rpmatlassian-confluence-5.4.4-x64.binmysql-connector-java-5.1.32-bin.jarconfluence5.1-crack.…

memset()、memcpy()、memcmp()的使用方法

1、void *memset(void *s,int ch,size_t n); 属性&#xff1a;函数&#xff1b; 用法&#xff1a;将s中当前位置后面n个字节用ch替换&#xff0c;并返回s&#xff1b; 头文件(C语言)&#xff1a;#include <string.h> 举例&#xff1a; char str_addr[50]; memset(str…

provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接错误的解决方法...

这个错误主要有以下几个原因造成&#xff1a; 1. 错误的连接字符串&#xff1a;例如数据源的实例名称“\"错误写成"/"了 2、Named Pipes(NP)没有启动 其他原因&#xff0c;详见&#xff1a;http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices…

使用VS2015编写C/C++开始步骤

下面围绕如何建立工程、如何添加代码和运行展开说明。 一、建立工程 &#xff08;1&#xff09;打开VS2015&#xff0c;然后在菜单栏中选择file—>New—>Project&#xff1b; &#xff08;2&#xff09;在弹出的界面中&#xff0c;选择Win32&#xff0c;编辑工程名字、…

ruby中正则表达式最小匹配与最大匹配

正则表达式中&#xff0c;默认的是最大匹配&#xff0c;即贪婪模式&#xff0c;但有些时候&#xff0c;要最小匹配&#xff0c; 请看下面的例子&#xff1a;(ruby) str "abbbbbdwwdwwwede"puts str[/a.*(dw)/] 结果为&#xff1a;abbbbbdwwdw str "abbbbbdwwd…

sprintf()、fprintf()的使用方法

1、int sprintf(char *str,char *format,[forgument,..]); 属性&#xff1a;函数&#xff1b; 用法&#xff1a;将格式化的字符写入字符串&#xff1b; 头文件&#xff1a;#include <stdio.h> 参数&#xff1a;char *str:要写入字符串的指针&#xff1b; char *form…

界面小项目之小米登录注册

<!DOCTYPE html><html><head> <meta charset"UTF-8"> <title>登录注册</title> <style> body, ul { margin: 0; padding: 0; list-style: none; } .logi…

Crusher Django 学习笔记4 使用Model

http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial4-using-basic.html 顺便学习一下FQ Crusher Django转载于:https://www.cnblogs.com/impact-crusher/p/3339029.html

C库中的输入函数、输出函数

关于这些C库输入函数、输出函数的用法&#xff0c;可以在命令行输入“man 3 xxx”来查询。 一、printf()函数、scanf()函数 1、printf()函数 函数模型 int printf(const char *format, ...); 函数作用 把存储在计算机中的二进制格式的数值&#xff0c;按照转换说明&#xff0c…

【音乐】想不起来歌名的瞎唱

1、风吹稻&#xff08;盗&#xff09;花香~好地方~ 2、转载于:https://www.cnblogs.com/wxl845235800/p/11152088.html

PWM调光方法在LED亮度调节中的应用

LED 是一种固态电光源&#xff0c; 是一种半导体照明器件&#xff0c;其电学特性具有很强的离散性。它具有体积小、机械强度大、功耗低、寿命长&#xff0c; 便于调节控制及无污染等特征&#xff0c;有极大发展前景的新型光源产品。LED 调光方法的实现分为两种&#xff1a; 模拟…

redhat rpmforge epel 安装源配置

参考阅读 epel 直接安装 RPMforge for CentOS 6 The default RPMforge repository does not replace any CentOS base packages. In the past it used to, but those packages are now in a separate repository (rpmforge-extras) which is disabled by default. You can fi…

知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页

回到目录 数据分页是这个经常说的东西&#xff0c;无论在WEBForm还是WinForm中它都会被单独拿出来&#xff0c;或者是公用组件&#xff0c;或者是公用类库&#xff0c;反正对于数据分页这个东西&#xff0c;总是我们关注的一个话题&#xff0c;但事实上&#xff0c;数据分页归…

main函数的参数

main函数可以带参数&#xff0c;这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个&#xff0c;习惯上这两个参数写为argc和argv。因此&#xff0c;main函数的函数头可写为&#xff1a; main (argc&#xff0c;argv)。C语言还规定argc(第一个形参)必须…

leetcood学习笔记-2-两数相加

题目描述&#xff1a; 方法一&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val x # self.next Noneclass Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:cur…

AIX samba服务器配置

最简单的安装文件是。bff文件了&#xff0c;菜鸟的最爱。下载地址我找了很久&#xff0c;现在奉献出来&#xff1a;http://www.bullfreeware.com/一、下载samba-3.0.4.0.bff二、将文件放在AIX系统的临时安装目录下&#xff0c;如&#xff1a;/usr/samba三、 smit installp&…

Forward框架的逆袭:解析Forward+渲染

转载请注明出处为KlayGE游戏引擎&#xff0c;本文地址为http://www.klayge.org/2012/04/21/forward%e6%a1%86%e6%9e%b6%e7%9a%84%e9%80%86%e8%a2%ad%ef%bc%9a%e8%a7%a3%e6%9e%90forward%e6%b8%b2%e6%9f%93/ AMD在7900系列显卡发布的时候同时推出了Leo demo&#xff0c; 并说明它…

atoi()函数:将字符串转换成整型数

C语言有atoi、atol、atof等库函数&#xff0c;可分别把ASCII编码的字符串转化为int、long、float类型的数字。这里讲述atoi()函数的内容&#xff0c;另外两个类似。 函数原型 int atoi(const char* nptr); 函数功能 将字符串转换成整型数。 补充说明 atoi()函数会检查nptr所指向…

Java NIO学习系列三:Selector

前面的两篇文章中总结了Java NIO中的两大基础组件Buffer和Channel的相关知识点&#xff0c;在NIO中都是通过Channel和Buffer的协作来读写数据的&#xff0c;在这个基础上通过selector来协调多个channel以同时读写数据&#xff0c;本文我们就来学习一下selector。 Java NIO中引入…

android中的BitMap(二)从网络和资源文件中获得一个BitMap

//取得网络上图片资源的路径 String urlstring"http://img.wallba.com/Public/Upload/Image/qichebizi/ asidunmading7/134/20113151413962.jpg"; try { //建立网络连接 URL imageURlnew URL(urlstring); URLConnection conimageURl.openConnection(); con.co…