标题:求这个最优路径算法?
只看楼主
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
结帖率:77.78%
已结贴  问题点数:50 回复次数:3 
求这个最优路径算法?

【问题描述】

一个城市的道路成了像棋盘那样的网状,南北向的路有n条,并由西向东从1标记到n,东西向的路有m条,并从南向北从1标记到m,每一个交叉点代表一个路口,有的路口有正在等车的乘客。一辆公共汽车将从(1,1)点驶到(n,m)点,车只能向东或者向北开.

写一个程序,告诉司机怎么走能接到最多的乘客。


第一行是n,m,和k,其中k是有乘客的路口的个数。

以下k行是有乘客的路口的坐标和乘客的数量。

每行内相邻两元素用一个空格隔开

【输出】

接到的最多的乘客数。

【输入输出样例】

bus.in
 

bus.out

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

【数据范围限制】

100%的数据:1 <= n <= 103, 1 <= m <= 103, 1 <= k <= 103;

每个路口的乘客数量不超过1000000。
求思路代码我自己实现!

搜索更多相关主题的帖子: 交叉点 汽车 司机 元素 
2015-09-08 16:08
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:25 
把每个点的乘客数记为value, 从这个点出发能拉到最多的乘客数记为f,状态转移方程:

f[i,j] = MAX(f[i+1,j], f[i,j+1]) + value[i,j];
收到的鲜花
  • rjsp2015-09-09 11:08 送鲜花  10朵   附言:我很赞同


[fly]存在即是合理[/fly]
2015-09-09 09:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:25 
程序代码:
#include <stdio.h>

int main( void )
{
    // 输入信息
    unsigned n = 8;
    unsigned m = 7;
    unsigned matrix[104][104] = { 0 };
    matrix[4][3] = 4;
    matrix[6][2] = 4;
    matrix[2][3] = 2;
    matrix[5][6] = 1;
    matrix[2][5] = 2;
    matrix[1][5] = 5;
    matrix[2][1] = 1;
    matrix[3][1] = 1;
    matrix[7][7] = 1;
    matrix[7][4] = 2;
    matrix[8][6] = 2;
    // 算法
    for( unsigned i=1; i<=n; ++i )
        for( unsigned j=1; j<=m; ++j )
            matrix[i][j] += (matrix[i-1][j]>matrix[i][j-1] ? matrix[i-1][j] : matrix[i][j-1]);
    // 输出结果
    printf( "%u\n", matrix[n][m] );

    return 0;
}
2015-09-09 11:09
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
得分:0 
回复 3楼 rjsp
大神
2015-09-09 17:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457107-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.214545 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved