UVA - 10285 Longest Run on a Snowboard

来源:互联网 发布:大数据监控中心是什么 编辑:程序博客网 时间:2024/05/16 14:50
题意:求最长的滑雪长度,只有当当前的高度大于下一步的高度的时候才能划到哪里,我们可以从头开始dp,顺便记录结果,
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 110;int dir[4][2] =  {{0,1},{0,-1},{-1,0},{1,0}};int G[MAXN][MAXN];int d[MAXN][MAXN],r,c;char name[50]; int dp(int x,int y){     if (d[x][y] >= 0)         return d[x][y];         int ans = 0;     for (int i = 0; i < 4; i++){         int nx = x + dir[i][0];         int ny = y + dir[i][1];         if (nx >= 1 && nx <= r && ny >= 1 && ny <= c && G[x][y] > G[nx][ny])            ans = max(ans,dp(nx,ny));      }     return d[x][y] = ans + 1; }int main(){    int t;    scanf("%d",&t);    while (t--){        memset(d,-1,sizeof(d));        scanf("%s%d%d",name,&r,&c);        for (int i = 1; i <= r; i++)            for (int j = 1; j <= c; j++)                scanf("%d",&G[i][j]);        int ans = 0;        for (int i = 1; i <= r; i++)            for (int j = 1; j <= c; j++)                ans = max(ans,dp(i,j));        printf("%s: %d\n",name,ans);    }    return 0; }


原创粉丝点击