zoukankan      html  css  js  c++  java
  • 滑雪 (搜索)(dp)(贪心)

    以每一点为起点找出所有路径,并求出以此点做为起点的最大路径

    求出每个点的最大路径后再找出其中最大的值,输出最大值

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #define N 101
    using namespace std;
    int Hang ,Lie;
    int dir[4][2]= {{-1,0},{0,-1},{1,0},{0,1}};//定义四个方向
    int len[N][N],map1[N][N];
    int dp(int i,int j)
    {
    if(len[i][j]!=0)return len[i][j];//当前坡度的长度
    int s,max1=0;
    for(int t=0; t<4; t++)
    {
    int sx=i+dir[t][0];
    int sy=j+dir[t][1];
    if(sx>=0&&sx<Hang&&sy>=0&&sy<Lie&&map1[sx][sy]<map1[i][j])//不越界并且小于当前的位置
    {
    s=dp(sx,sy);//计算以此位置开始的某一条路径的坡度
    if(s>max1)max1=s;//找出最大的
    }
    }
    len[i][j]=max1+1;
    return max1+1;
    }
    int main()
    {

    while(~scanf("%d%d",&Hang,&Lie))
    {
    memset(len,0,sizeof(len));
    for(int i=0; i<Hang; i++)
    for(int j=0; j<Lie; j++)
    scanf("%d",&map1[i][j]);
    int max2=-1;
    for(int i=0; i<Hang; i++)
    for(int j=0; j<Lie; j++)
    {
    len[i][j]=dp(i,j);//计算以任意点为起点的最大长度
    if(len[i][j]>max2)max2=len[i][j];//再找出最大长度
    }
    printf("%d ",max2);
    }

    }

    梦里不知身是客,一晌贪欢。
  • 相关阅读:
    putty设置用key自动登录
    linux快速进入全屏命令行模式
    二维数组的指针
    vim编写Bash脚本
    使用cat命令添加或附加多行文本
    Linode中的Network Helper
    网络通信框架之retrofit
    网络通信框架之okHttp
    网络通信框架之okHttpUtils
    Volley源码分析
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/4940489.html
Copyright © 2011-2022 走看看