zoukankan      html  css  js  c++  java
  • 题解 UVA10285 最长的滑雪路径 Longest Run on a Snowboard

    Solution

    双倍经验

    就是记搜嘛。

    搞一个二维数组记录一下当前的最长滑雪路径,其他和普通 dfs 没什么两样。

    (4) 个方向搜索,如果高度符合就 (+1)

    多测要注意数组初始化。

    具体见代码。

    Code

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,a[105][105],b[105][105],maxx,t;
    int dx[4]={-1,1,0,0},
    	dy[4]={0,0,-1,1};
    string name;
    #define max(x,y) x>y?x:y
    inline int dfs(int x,int y)
    {
    	if(b[x][y])
    		return b[x][y];//判重
    	b[x][y]=1;
    	for(int i=0;i<4;++i)//向四个方向去
    	{
    		int xx=x+dx[i],yy=y+dy[i];
    		if(xx<1||yy<1||xx>n||yy>m)
    			continue;//判边界
    		if(a[xx][yy]>=a[x][y])
    			continue;//判高低
    		b[x][y]=max(b[x][y],dfs(xx,yy)+1);
    	}
    	return b[x][y];
    }
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin>>t;
    	while(t--)//多测
    	{
    		memset(b,0,sizeof(b));
    		memset(a,0,sizeof(a));//初始化
    		cin>>name>>n>>m;
    		for(int i=1;i<=n;++i)
    			for(int j=1;j<=m;++j)
    				cin>>a[i][j];
    		for(int i=1;i<=n;++i)
    			for(int j=1;j<=m;++j)
    			{
    				b[i][j]=dfs(i,j);//搜索+存储
    				maxx=max(maxx,b[i][j]);
    			}
    		cout<<name<<": "<<maxx<<"
    ";	
    		maxx=0;	
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    《骆驼祥子》
    《基督山伯爵》
    JDeveloper 假死问题
    JSP代码执行顺序
    Ajax简单案例(实现提交值到服务器值不刷新页面)
    JS和JSP之间值传递
    如何更好的编码
    Telnet 便捷执行脚本
    MyBatis 缓存
    MyBatis 中传递多个参数的 4 种方式
  • 原文地址:https://www.cnblogs.com/CM-0728/p/14287116.html
Copyright © 2011-2022 走看看