NOJ——1559Jump to the Top of Mountain(简单暴力DFS+渣渣代码)
[1559] Jump to the Top of Mountain
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
- Have you played a game named Minecraft?
In the game, there is a thing alloy you can not destroy, and its shape is a 1*1*1 area cube. I can only jump 1 meter at vertical height, it means I can jump from x meters height to y meters height when y is not more than x+1.Now, there is a rectangle field of m*n areas, each area is a positive interger X, X means the number of alloy in this area. You can only jump to four adjacent areas(up, down, left and right).
At the beginning, you are at out of the rectangle field, and the height is 0 out of the rectangle field.
Can you help me? I only want to know if I can jump to the peak of field? - 输入
- Input ends of EOF.
First line contains two positive integers m and n(3 <= m, n <= 100).
Then m lines, each line contains n intergers X(0 <= X <= 10000). - 输出
- If I can jump to the peak, output "YES", or output "NO".
- 样例输入
5 5
2 2 1 2 2
2 2 2 2 2
2 2 3 2 2
2 2 2 2 2
2 2 2 2 2
3 3
2 1 2
2 0 1
1 1 3
4 4
1 1 1 1
1 3 1 2
1 1 1 3
1 1 1 4
4 4
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13- 样例输出
YES
NO
YES
YES
基本没写过几道搜索。由于从边缘进入,枚举边缘所有格子进行搜索即可,如果认真读题肯定可以知道能向低处走...以为只能平地或高一格还赏了一个WA。蛋疼
代码非常搓+渣:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int pos[110][110];
int vis[110][110];
int flag=0;
int tall;
int n,m;
void look(const int &x,const int &y,const int &pre)
{
if(x<0||y<0||x>=n||y>=m||vis[x][y]==1)//边界+是否访问过判断
return;
vis[x][y]=1;//标记访问
if(pos[x][y]-pre<=1)
{
if(pos[x][y]==tall)
{
flag=1;
puts("YES");
return;
}
look(x+1,y,pos[x][y]);
if(!flag)
look(x-1,y,pos[x][y]);
if(!flag)
look(x,y+1,pos[x][y]);
if(!flag)
look(x,y-1,pos[x][y]);
}
else
{
vis[x][y]=0;//路不通,不算访问过。
return;
}
}
int main(void)
{
int i,j;
while (~scanf("%d%d",&n,&m))
{
memset(pos,0,sizeof(pos));
tall=-1;flag=0;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
scanf("%d",&pos[i][j]);
tall=max(tall,pos[i][j]);
}
}
if(tall==0)
{
puts("NO");
continue;
}
for (j=0; j<m; j++)
{
if(pos[0][j]==1)
{
memset(vis,0,sizeof(vis));
look(0,j,0);
}
if(flag)
break;
}
if(!flag)
{
for (j=0; j<m; j++)
{
if(pos[n-1][j]==1)
{
memset(vis,0,sizeof(vis));
look(n-1,j,0);
}
if(flag)
break;
}
}
if(!flag)
{
for (i=0; i<n; i++)
{
if(pos[i][0]==1)
{
memset(vis,0,sizeof(vis));
look(i,0,0);
}
if(flag)
break;
}
}
if(!flag)
{
for (i=0; i<n; i++)
{
if(pos[i][m-1]==1)
{
memset(vis,0,sizeof(vis));
look(i,m-1,0);
}
if(flag)
break;
}
}
if(!flag)
puts("NO");
}
return 0;
}
NOJ——1559Jump to the Top of Mountain(简单暴力DFS+渣渣代码)的更多相关文章
- 经验分享:10个简单实用的 jQuery 代码片段
尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...
- 10个简单实用的 jQuery 代码片段
尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库. 今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 1.平滑滚动到 ...
- 简单实用的HTML代码
简单实用的HTML代码 一.HTML各种命令的代码: 1.文本标签(命令) <pre></pre> 创建预格式化文本 <h1></h1> 创建最大的标题 ...
- Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码
Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...
- [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS
[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...
- 暴力求解——UVA 572(简单的dfs)
Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...
- PHP分页初探 一个最简单的PHP分页代码的简单实现
PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核 ...
- POJ 3256 (简单的DFS)
//题意是 K N, M; //有K个牛 N个牧场,M条路 ,有向的 //把K个牛放到任意的n个不同牧场中,问所有牛都可以到达的牧场数的总和 //这是一道简单的DFS题 //k 100 //n 1 ...
- 用简单的反射优化代码(动态web项目)
在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...
随机推荐
- 【UML】构件图Component diagram(实现图)(转)
http://blog.csdn.net/sds15732622190/article/details/49048887 前言 下面要介绍UML中的构建图,它属于实现图的一种,五种静态图之一. 定义 ...
- 使用Timer组件制作左右飘动的窗体
实现效果: 知识运用: Form类的Left和Top属性 实现代码: private void timer1_Tick(object sender, EventArgs e) { Rectangle ...
- python_99_面向对象多态
#多态:一种接口,多种实现.主要作用:实现接口重用 #方法1: class Animal(object): def __init__(self,name): self.name=name class ...
- CVE-2014-1767
[0x00].简介 CVE-2014-1767漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的double ...
- CodePlus #4 最短路
题目传送门 北极为什么会有企鹅啊,而且北纬91°在哪啊? 关键在建图 因为任意两个城市间都可以互相到达,再加上还有"快捷通道",光是建图就已经\(\rm{T}\)了-- 但这题给了 ...
- ll1文法
<program>-><external_declaration> | <program> <external_declaration> < ...
- 01_7_Struts_用Action的属性接收参数
01_7_Struts_用Action的属性接收参数 1. 配置struts.xml文件 <package name="user" namespace="/user ...
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程. Server类代码如 ...
- Git下的gitignore规则介绍
匹配模式前/代表项目根目录 匹配模式最后加/代表是目录 匹配模式前加!代表取反 (忽略文件夹,但不忽略文件夹下的某个文件) *代表任意个字符 ? 匹配任意一个字符 **匹配多级目录 node_modu ...
- 一个form表单对应多个submit
一个form表单多个submit 在平时项目开发过程中,经常会遇到一个form表单对应多个submit提交的情况,那么 ,这种情况应该怎么解决呢,也很简单,这时候就不能用submit来提交了,可以通过 ...