poj 3009 Curling 2.0 (dfs的应用)

 http://poj.org/problem?id=3009

(1)这是一个用球撞石头的游戏,撞到石头,石碎球停。在规定的10次抛球机会下,若求移动到终点就赢,否则算输了(出界直接算输)。

(2)每一次的深搜都有四个方向,每个方向要一直走,直到出现以下状况为止:

    1)刚要抛球,被墙挡住了(该情况不能抛球);

    2)  出界;

    3)到达终点;

    4) 撞墙。

    其中只有第四种情况需要进行深搜,其他情况均不需要。(虽然这很显然,但是案例

    通不过的基本上就是因为这个,千万小心)。

(3)通过了所有案例,为什么还是WA??小心,注意输入 n,m 顺序问题。题中所给的案例

   恰好与n,m 的顺序无关。。。这是挖好了陷阱等你呢。

(4)稍微注意: if(!n&&!m) break;

总的来说,这是一道不错的dfs入门题。

具体代码:

View Code
#include<stdio.h>
#include<string.h>
#define Inf (1<<28)
int n, m;
int map[25][25];
int dir[4][2]={1,0,0,1,-1,0,0,-1};
int px, py, ans;
int dfs(int x, int y, int depth)
{int i, j, k;if(depth>10) return 0;for(i=0;i<4;i++){int tx=x, ty=y, ex, ey;int g=0;for(j=0;;j=1){ex=tx+dir[i][0];ey=ty+dir[i][1];if(!j&&map[ex][ey]==1) break;   //靠墙,不能投if(ex<=0||ex>n||ey<=0|ey>m)  break;  //出界if(map[ex][ey]==3)   //终点
            {if(ans>depth) ans=depth;return 0;}if(map[ex][ey]==1) {g=1; break;}//撞墙tx=ex; ty=ey;//球还在滚动中
        }if(g){map[ex][ey]=0;dfs(tx, ty, depth+1);  //下一步,只有撞墙的才算一步map[ex][ey]=1;}}return 0;
}
int main()
{int i, j, k;while(scanf("%d%d", &m, &n)!=EOF, n||m)  //注意 n, m 的顺序
    {for(i=1;i<=n;i++)for(j=1;j<=m;j++){scanf("%d", &map[i][j]);if(map[i][j]==2) {px=i;py=j;}}ans=Inf;dfs(px, py, 1);if(ans!=Inf) printf("%d\n", ans);else printf("-1\n");}return 0;
}

 

 

 

转载于:https://www.cnblogs.com/tim11/archive/2012/08/18/2645715.html

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

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

相关文章

移动app测试的多样性_快速搞定APP移动端自动化测试

1. 何为数据驱动什么是参数化&#xff1f;什么又是数据驱动&#xff1f;经常有人会搞不明白他们的关系&#xff0c;浅谈一下个人的理解&#xff0c;先来看两个测试中最常见的场景&#xff1a;登录&#xff1a;不同的用户名&#xff0c;不同的密码&#xff0c;不同的组合都需要做…

ui自动化测试框架_浅谈前端(UI)自动化测试

作为一名测试开发从业者&#xff0c;自动化测试好像是绕不开的话题...。结合最近接触到的一些测开应聘同学聊到关于前端自动化测试及自己的理解&#xff0c;分享一下自己对UI自动化测试的认识&#xff0c;大概如下。测试分层的自动化测试思想自动化测试分层思想所倡导的是对系统…

【转发】响应式Web设计?怎样进行?

什么是响应式Web设计&#xff1f;怎样进行&#xff1f;眼下&#xff0c;几乎每个新客户都希望他们的网站可以有专门的移动设备版本。最完美的情况呐&#xff0c;就是为iPhone、iPad、黑莓、Kindle…各自打造一款——页面分辨率还必须兼容任何设备。谁知道未来5年内我们还需要为…

基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能

说明&#xff1a; 本文档探讨基于Asterisk如何实现VoIP的一些基本功能&#xff0c;包括基本呼叫功能的方案选取、主叫号码透传、如何编写AsteriskAGI程序、Radius认证计费模块等。 本文档VoIP软终端使用X-Lite&#xff0c;其它终端均可以接入测试。 文章内容仅供参考,转载请注…

excel查重_发票查重工具,不止查重这么简单,你还可以体验这些新玩法

电子发票报销是目前所有行业的会计都要面对的一项重要工作&#xff0c;而目前电子发票报销的普遍方式都是打印报销&#xff0c;这样一来&#xff0c;会计就不得不面对企业员工将电子发票重复打印报销和篡改报销的风险&#xff0c;而其中&#xff0c;尤其以重复打印报销是会计不…

python导出dxf图_在PDMS中使用python直接生成管口方位图(开源分享第三集)

在PDMS中使用python直接生成管口方位图(开源分享第三集)距离上一次发推送已有5个月之久&#xff0c;上周立了冬&#xff0c;这二季我为五斗米折了腰&#xff0c;最近才缓过气来。令我没想到的是&#xff0c;大家竟然对这个主题这么有兴趣&#xff0c;有关注者几次在私信询问我什…

基于Asterisk的VoIP开发指南(2)——Asterisk AGI程序编写指南

5. Asterisk AGI程序编写指南 5.1概述 很多时候&#xff0c;我们需要在拨号方案中做某些业务逻辑的判断或者外部数据库的查询&#xff0c;根据具体地需要&#xff0c;有几种做法&#xff1a; 1&#xff0e;使用Asterisk的通道变量、Goto函数、Gotoif函数等实现某些简单跳转…

win7关闭休眠_【科普】笔记本电脑,待机/睡眠/休眠有啥区别?(ACPI SPM S0-S5)...

本文聊聊笔记本电脑话题下&#xff0c;经常有人问到的内容——关机 睡眠 休眠 这三个选项有什么区别&#xff1f;电脑可以不关机只合上盖子吗&#xff1f;花了俩小时&#xff0c;求个赞&#xff0c;希望有专栏能收这篇内容~先说答案&#xff1a;快速唤醒&#xff1a;开盖/操作鼠…

k8s dashboard_【大强哥-k8s从入门到放弃02】Kubernetes1.17部署Dashboard2.0

号外号外&#xff0c;后面所有提升视频都会更新到知乎和B站上去&#xff0c;不会直接发群里了&#xff0c;哈哈&#xff0c;能看懂这句话的我都认识&#xff0c;大家可以先关注一下&#xff0c;我知乎上的所有文档也会录成视频更多视频详见 杨哥天云&#xff1a;https://space.…

Andoid 采用ListView三种显示数据列表

Android系统中列表形式的显示方式应该是我们最熟悉不过的界面了&#xff0c;例如通讯录、通话记录、信息列表等等&#xff0c;例如下面的形式&#xff1a; 我们在开发项目需要用到这种形式显示信息时除了调用系统给我们提供的ListView控件以外我们还可以自定义该控件&#xff0…

url采集器_Linux「第三节」-centos7.5部署数据采集器Telegraf

Telegraf采集器采集数据后&#xff0c;会存储到influxdb数据库&#xff0c;然后grafana从influxdb读取数据&#xff0c;在grafana面板上展示&#xff0c;整体的流程就是这样。下面就演示下Telegraf、influxdb、grafana相互间的配置与衔接下载Telegrafwget https://dl.influxdat…

西门子主程序调用子程序_S7200Smart 子程序局部变量使用教程

全新的 S7-200 SMART 带来两种不同类型的 CPU 模块&#xff0c;标准型和经济型&#xff0c;全方位满足不同行业、不同客户、不同设备的各种需求。标准型作为可扩展 CPU 模块&#xff0c;可满足对 I/O 规模有较大需求&#xff0c;逻辑控制较为复杂的应用 &#xff1b;而经济型 C…

电脑怎么结束进程_深刻了解windows系统的任务管理器,电脑高手的成长之路

伙伴们我们每天都在用电脑&#xff0c;电脑和手机已经离不开了&#xff0c;可以说手机和电脑就是我们的左膀右臂。我们用电脑的时候&#xff0c;如果电脑卡了或者反应慢了&#xff0c;我们都会想到吧任务管理器调出来看看&#xff0c;可以说调出任务管理器就像医生看病一样&…

手机连接投影机的步骤_家用投影仪如何安装 家用投影仪安装方法【步骤详解】...

家用投影仪怎么安装 根据安装方式的不同&#xff0c;投影仪可以分为桌式正投、吊顶正投、桌式背投、吊顶背投几种。方便随时随地使用的便携式投影仪一般是桌式正投&#xff0c;这种投影方法受环境光影响较大 但如果装修时就设计成吊顶正投方式&#xff0c;不仅在性价比方面更加…

win7锁屏时间怎么设置_电脑锁屏时间怎么设置

以WIN10系统为例演示。1/3打开“控制面板”&#xff1b;点击“电源选项”2/3点击“更改计划设置”&#xff1b;设置锁屏时间3/3点击“保存修改”即可

Ajax原理

引用&#xff1a;http://www.cnblogs.com/xugang/archive/2007/10/16/925993.html 看了“坐断东南 笑煞之”的那篇 .net组件开发系列(二)之武林系列 太极拳 开发ajax控件 总有一种意犹味尽的感觉。没有想到 金色海洋&#xff08;jyk&#xff09;竟“晕了”&#xff0c;我感觉写…

cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase

Apache HBase Shell是JRuby的IRB&#xff0c;并在此基础上加入了HBase特有的命令。JRuby是用Java实现的Ruby解释器。通过JRuby&#xff0c;你可以在JVM上直接运行Ruby程序&#xff0c;调用Java的类库。IRB即interactive ruby&#xff0c;交互式Ruby。运行HBase Shell&#xff1…

安卓 图像清晰度识别_智能车牌识别系统的常见故障和解决方法

车牌号是车辆的唯一身份标志&#xff0c;它的特殊性与重要性从而决定了车牌识别系统在智慧城市交通管理系统中成为不可或缺的重要组成部分。下面智能车牌识别系统厂家畅荧智能科技将详细为您介绍一些智能车牌识别系统常见的故障问题和对应的解决方法。智能车牌识别系统的常见故…

post postman 传递数组对象_如何使用postman做接口测试

一&#xff0c;接口测试是什么什么是接口测试&#xff0c;不说广泛的概念&#xff0c;直接电脑打开浏览器&#xff0c;进入开发者工具(F12)随意进入一些网站可以看到下面左侧栏出现了一系列的数据&#xff1a;上面条数据都是一个单独的接口&#xff0c;点击单个接口&#xff0c…

形位公差符号大全_玩转CAD快捷键(大全),一篇文章就够了

CAD快捷键命令大全符号键&#xff08;CTRL开头&#xff09;CTRL1 PROPCLOSEOROPEN 对象特性管理器CTRL2或4 ADCENTER 设计中心CTRL3 CTOOLPALETTES 工具选项板CTRL8或QC QuickCalc 快速计算器控制键CTRLA AI_SELALL 全部选择CTRLC或CO/CP COPYCLIP或COpy 复制CTRLD或F6 COORDIN…