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()方法,我们可以在链接中附带参数进行区 ...
随机推荐
- 并发教程--JAVA5中 计数信号量(Counting Semaphore)例子
并发教程--JAVA5中 计数信号量(COUNTING SEMAPHORE)例子 本文由 TonySpark 翻译自 Javarevisited.转载请参见文章末尾的要求. Java中的计数信息量(C ...
- UVALive 3938 Ray, Pass me the dishes! (动态最大连续和)
题意:求一个动态区间的最大连续和. 静态版本的O(n)算法显示不适用了,但是可以用线段树分治,因为一个连续和要在两边的区间,要么跨越两边,对于一个结点维护最大前缀和,后缀和,子区间连续和. 题目要求输 ...
- [论文理解] Connectionist Text Proposal Network
Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...
- spring maven 包
<spring-framework.version>.RELEASE</spring-framework.version> <dependency> <gro ...
- 百度site网址显示完整站点信息的分析
去年赛花红就发现百度site本博客网址,仅出现找到相关结果数约多少个,数字为估算值,网站管理员如需了解更准确的索引量,请使用百度站长平台等字样.但赛花红又发现有的网站却显示着完整的站点信息,当时以为是 ...
- Beta冲刺(周五)
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...
- 2018.3.5 Java语言基础与面向对象编程实践
Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...
- LeetCode 53题 最大子序和 -- JavaScript
解题思路分析: 该题是在一个整数数组中找到一个和最大的连续子数组,并返回和值.那么如何找到一个和最大的连续子数组呢?我们知道,这肯定需要遍历数组才行:好,那我们就开始遍历数组.首先,我们初始化最大和 ...
- python报错UnicodeDecodeError:
Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化.编码是 unicode -> str,相反的,解码就 是 str -> unicode.剩下的问题就 ...
- 【转】再谈 最速下降法/梯度法/Steepest Descent
转载请注明出处:http://www.codelast.com/ 最速下降法(又称梯度法,或Steepest Descent),是无约束最优化领域中最简单的算法,单独就这种算法来看,属于早就“过时”了 ...