zoukankan      html  css  js  c++  java
  • 98.公共汽车

    problem 4 公共汽车
    【问题描述】
         一个城市的道路,南北向的路有n条,并由西向东从1标记到n,东西向的路有m条,并从南向北从1标记到m,每一个交叉点代表一个路口,有的路口有正在等车的乘客。一辆公共汽车将从(1,1)点驶到(n,m)点,车只能向东或者向北开.
    问:司机怎么走能接到最多的乘客。

    98.公共汽车
    图片为一个正方形,中间有很多条线,每个交点有一个人数或者没有。
    【输入描述
    第一行是n,mk,其中k是有乘客的路口的个数。
    以下k行是有乘客的路口的坐标和乘客的数量。已知每个路口的乘客数量不超1000000n,m<=1000.
    【输出描述
    接到的最多的乘客数。
    样例输入
    8 7 11
    4 3 4
    6 2 4
    2 3 2
    5 6 1
    2 5 2
    1 5 5
    2 1 1
    3 1 1
    7 7 1
    7 4 2
    8 6 2
    样例输出
    11 
    基本思路:
    把这个方格转动之后,就是一个数塔,再把题目中给的坐标,按照数塔的原则转换为数塔的坐标,在找一条最大路就好了。
    代码:
    #include< iostream >
    #include< cstdio >
    using namespace std;
    int n,m,k,a,b;
    long long p[2001][2001],f[2001][2001];
    int main()
    {
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=k;++i)
    {
    scanf("%d%d",&a,&b);
    scanf("%d",&p[a+b-1][b]);
    }
    f[n+m-1][m]=p[n+m-1][m];//坐标转换 
    for(int i=n+m-1-1;i>=1;--i)
     for(int j=1;j<=i;++j)
     f[i][j]=max(f[i+1][j],f[i+1][j+1])+p[i][j];
     cout<<f[1][1];
    return 0;
     

  • 相关阅读:
    os
    虚拟站点配置
    21. Merge Two Sorted Lists
    38. Count and Say
    算法分类的书写模板
    Vue
    问题集、知识点
    [Linux] Linux命令
    回调函数在小程序中的实际应用
    小程序app.onLaunch中获取用户信息,index.onLoad初次载入时取不到值的问题
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370722.html
Copyright © 2011-2022 走看看