POJ3176-Cow Bowling(dp)
来源:互联网 发布:台式电脑音箱推荐知乎 编辑:程序博客网 时间:2024/05/22 00:49
大致题意:
输入一个n层的三角形,第i层有i个数,求从第1层到第n层的所有路线中,权值之和最大的路线。
规定:第i层的某个数只能连线走到第i+1层中与它位置相邻的两个数中的一个。
解题方法:
用二维数组way[][]靠左存储三角形内的数据,那么连线规则变更为
way[i][j] → Way[i+1][j]
或 Way[i][j] → Way[i+1][j+1]
注意:way[][]初始化为输入时的三角形数值,此时way[i][j]表示该点位置上的权值,没输入的位置初始化为0。
解题思路:
动态规划。
way[i][j]表示以第i行j列的位置作为终点的路线的最大权值。 (注意区分初始化时的意义)
那么way[i][j]的最大值取决于way[i-1][j-1]和way[i-1][j],从这两者之间筛选出最大值,加到way[i][j]上,即为way[i][j]的最大权值。
最后只要比较第n行中所有位置的权值way[n][j],最大的一个即为所求。
AC代码
package dp;import java.util.Scanner;public class Main{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int map[][]=new int[n+1][n+1]; init(map,n); int sum=-1; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ map[i][j]=scan.nextInt(); map[i][j]+=Math.max(map[i-1][j-1],map[i-1][j]); if(i==n&&sum<map[i][j]){ sum=map[i][j]; } } }// for(int i=1;i<=n;i++){// for(int j=1;j<=i;j++){// map[i][j]+=Math.max(map[i-1][j-1],map[i-1][j]);// if(i==n&&sum<map[i][j]){// sum=map[i][j];// }// }// // } System.out.println(sum); } private static void init(int[][] map,int n) { // TODO Auto-generated method stub for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ map[i][j]=0; } } }}
阅读全文
0 0
- poj3176 Cow Bowling DP
- [dp]poj3176 Cow Bowling
- [DP]poj3176 Cow Bowling
- POJ3176-Cow Bowling(dp)
- POJ3176-Cow Bowling-简单dp
- poj3176--Cow Bowling(dp:数塔问题)
- poj3176——Cow Bowling(dp)
- (POJ3176) Cow Bowling <简单dp>
- POJ3176——Cow Bowling(水DP)
- POJ3176----Cow Bowling
- poj3176 cow bowling
- poj3176 Cow Bowling
- poj3176 Cow Bowling
- poj3176 Cow Bowling
- POJ3176--Cow Bowling
- POJ3176-Cow Bowling
- POJ3176-Cow Bowling
- POJ3176 Cow Bowling
- c++ 重载new和delete实现内存管理
- Second My Problem First HDU
- Hadoop Yarn Linux Container Executor配置
- WPF Popup下ListBox ScrollIntoView无效问题
- 使用宏将一个数二进制中的奇数位和偶数为进行交换
- POJ3176-Cow Bowling(dp)
- 分类categories动态添加方法和属性
- vivado HLS 设计实现sBrief描述子
- java中获取时间戳的方法
- flume1.7 TailDirSource断点续传与文件更名后数据重复采集的bug修复
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)新的异常解决方案
- MyBatis学习入门_01
- 快速排序
- 经验之道:最有效的 iOS 内存泄漏检测