zoukankan      html  css  js  c++  java
  • 【洛谷1434 [SHOI2002]滑雪】记忆化搜索

    AC代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    #define ms(a,b) memset(a,b,sizeof(a))
    
    typedef long long ll;
    
    const int dx[4]={1,0,-1,0};
    const int dy[4]={0,1,0,-1};
    
    int vis[105][105], a[105][105];
    int r, c;
    int f[105][105];
    
    inline int read()
    {
        int X=0,w=0; char ch=0;
        while(!isdigit(ch))
        {
            w|=ch=='-';
            ch=getchar();
        }
        while(isdigit(ch))
        {
            X=(X<<3)+(X<<1)+(ch^48);
            ch=getchar();
        }
        return w?-X:X;
    }
    
    int dfs( int x, int y ) 
    {
        if ( f[x][y] ) return f[x][y] ;
        int tmp=1;
        for (int i= 0; i < 4; i++) 
        {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx<1 || nx>r || ny<1 || ny>c) continue;
            if (a[x][y] < a[nx][ny] ) tmp = max( dfs( nx, ny)+1, tmp);
        }
        return f[x][y] = tmp;
    }
    
    int main(int argc,char* argv[])
    {
        ms ( f , 0);
        r=read(),c=read();
        for (int i=1; i<=r; i++) 	
        {
            for (int j=1; j<=c; j++) a[i][j]= read(), vis[i][j]= 0;
        }
        int ans = 0;
        for (int i= 1; i<= r; i++) 
        {
            for (int j= 1; j<= c; j++) 
            {
                f[i][j] = dfs( i, j);
                ans = max( f[i][j], ans);
            }
        }
        printf ("%d
    ", ans);
        return 0;
    }
    
    
    
  • 相关阅读:
    3.2.8.1 打印与否
    3.2.8 sed 的运作
    3.2.7.1 替换细节
    3.2.7 基本用法
    3.2.6 在文本文件里进行替换
    3.2.5 程序与正则表达式
    pgm2
    pgm6
    pgm7
    pgm8
  • 原文地址:https://www.cnblogs.com/Dawn-Star/p/9734735.html
Copyright © 2011-2022 走看看