本文主要是介绍题目 1294: 木瓜地,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
Bessie不小心游荡出Farmer John的田地,而走进了相邻的农民的地。她举起一个木瓜,木瓜对奶牛来说可是不可多得得美味。这个木瓜林像一般的威斯康星州的田地一样被分割成一个R行C列的网格(1 < = R < = 40, 1 < = C < = 40)。Bessie可以从一个格沿著一条跟X轴或Y轴平行的直线走到邻接的令一个格。Bessie发现一开始她自己在木瓜林的(1,1),也就是第一行第一列慢悠悠地咀嚼着木瓜。
Bessie总是用她最信赖地双筒望远镜去数每一个邻接的格的低掛著的木瓜的数目。然后她就游荡到那个有最多没有被吃掉的木瓜的邻接的格子(保证这样的格子只有一个)。
按照这种移动方法,最终Bessie总是会在(R,C)停止然后吃掉那里的木瓜。
给定这个木瓜林的大小及每个格的木瓜数F_ij(1 < = F_ij < = 100),要求Bessie一共吃了多少个木瓜。
代码:
package lanqiao;import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int R = sc.nextInt();int C = sc.nextInt();int[][] a = new int[R][C];for(int i = 0;i < R;i ++){for(int j = 0;j <C;j ++){a[i][j] = sc.nextInt();}}//四个方向 分别是 右 下 左 上int[] dx={0,1,0,-1};int[] dy={1,0,-1,0};int startX=0;//起始横坐标int startY=0;//起始纵坐标int endX=R-1;//终点横坐标int endY=C-1;//终点纵坐标int sum=0;//存吃瓜总数while (true){sum+=a[startX][startY];a[startX][startY]=-1;//设-1 表示吃过了if (startX==endX && startY == endY){break;}//判断四个方向 谁大加谁int maxX=0;int maxY=0;for(int i=0;i<=3;i++){try {if(a[startX+dx[i]][startY+dy[i]] != -1){if(a[startX+dx[i]][startY+dy[i]] >a[maxX][maxY]){maxX=startX+dx[i];maxY=startY+dy[i];}}}catch (Exception ex){continue;}}//四个方向 都无点可走 表示已经到右下角 退循环startX=maxX;startY=maxY;}System.out.println(sum);}
}
这篇关于题目 1294: 木瓜地的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!