POJ 1163 The Triangle
2014-03-31 15:06
274 查看
题目大意:
有一数字三角形(金字塔形,第n行有n个数字,数字范围为[0, 99]),现测例只有一个,给你三角形的行数N(1 < N ≤ 100)以及整个三角形,现计算从顶到底的一条最大路径的值(即该路径上各数字之和),每一步只能往左下或右下方向走。
题目链接
注释代码:
无注释代码:
有一数字三角形(金字塔形,第n行有n个数字,数字范围为[0, 99]),现测例只有一个,给你三角形的行数N(1 < N ≤ 100)以及整个三角形,现计算从顶到底的一条最大路径的值(即该路径上各数字之和),每一步只能往左下或右下方向走。
题目链接
注释代码:
/* * Problem ID : POJ 1163 The Triangle * Author : Lirx.t.Una * Language : C * Run Time : 0 ms * Run Memory : 152 KB */ #include <stdio.h> //maximum number of rows //最大行数 #define MAXROWN 101 #define MAX(x,y) ( (x) > (y) ? (x) : (y) ) //最大和为9900,处在short范围内 //dp[i][j]表示以坐标为(i, j)的元素为路径终点的 //路径的当前最大值 short dp[MAXROWN][MAXROWN]; int main() { int n;//行数 int i, j;//计数变量 int ans; scanf("%d", &n); for ( i = 1; i <= n; i++ ) for ( j = 1; j <= i; j++ ) { scanf("%d", &dp[i][j]); //路径只可能来自左上或右上 dp[i][j] += MAX( dp[i - 1][j - 1], dp[i - 1][j] ); } for ( ans = -1, i = 1; i <= n; i++ )//从底部找出最大路径 ans = MAX( ans, dp [i] ); printf("%d\n", ans); return 0; }
无注释代码:
#include <stdio.h> #define MAXROWN 101 #define MAX(x,y) ( (x) > (y) ? (x) : (y) ) short dp[MAXROWN][MAXROWN]; int main() { int n; int i, j; int ans; scanf("%d", &n); for ( i = 1; i <= n; i++ ) for ( j = 1; j <= i; j++ ) { scanf("%d", &dp[i][j]); dp[i][j] += MAX( dp[i - 1][j - 1], dp[i - 1][j] ); } for ( ans = -1, i = 1; i <= n; i++ ) ans = MAX( ans, dp [i] ); printf("%d\n", ans); return 0; }
相关文章推荐
- POJ 1163 The Triangle
- poj 1163 The Triangle (动态规划)
- POJ - 1163 The Triangle(动态规划)
- POJ 1163 The Triangle (DP)
- (转)POJ 1163 The Triangle 解题报告
- Poj1163 The Triangle(动态规划求最大权值的路径)
- POJ 1163 The Triangle【DP】
- POJ 1163 The Triangle(入门动规)
- poj_1163 the triangle
- poj 1163 The Triangle
- poj 1163 The Triangle 动态规划
- poj 1163__The Triangle(dp)
- POJ 1163 The Triangle(基础DP)
- poj 1163 The Triangle
- poj 1163 The Triangle
- The Triangle--poj--1163
- POJ1163-The Triangle
- Poj1163 The Triangle(动态规划求最大权值的路径)
- poj 1163 The Triangle
- 【原】 POJ 1163 The Triangle 三角形最大路径 动态规划 解题报告