zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    .NET中使用Memcached的相关资源整理
    Windows 下的.NET+ Memcached安装
    基于.NET的大型Web站点StackOverflow架构分析(转)
    组建学习型项目团队(转)
    WIN 2003服务器终极安全及问题解决方案
    禁止用户远程登录方法方法
    微信公众平台完整开发教程【转】
    【转】Android 最火的快速开发框架XUtils
    【转】Android 最火框架XUtils之注解机制详解
    android开发Proguard混淆与反射
  • 原文地址:https://www.cnblogs.com/Blackops/p/5469247.html
Copyright © 2011-2022 走看看