java解题公共汽车

来源:互联网 发布:人工智能会毁灭人类 编辑:程序博客网 时间:2024/05/17 07:42

公共汽车
【问题描述】
一个城市的道路成了像棋盘那样的网状,南北向的路有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

package chang57;import java.io.File;import java.io.FileWriter;import java.io.Writer;import java.util.Scanner;public class Bus {public static void main(String[] args) {try {Scanner sc = new Scanner(new File("bus.in"));Writer wr = new FileWriter("bus.out");int n = sc.nextInt();int m = sc.nextInt();int k = sc.nextInt();int arr[][] = new int[n + 1][m + 1];for (int i = 0; i < k; i++) {arr[sc.nextInt()][sc.nextInt()] = sc.nextInt();}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {arr[i][j] += max(arr[i - 1][j], arr[i][j - 1]);}}wr.write(String.valueOf(arr[n][m]));sc.close();wr.close();} catch (Exception e) {e.printStackTrace();}}static int max(int a, int b) {return a > b ? a : b;}}




0 0
原创粉丝点击