poj 1163 The Triangle(第一道DP~~~~)
2010-07-23 21:17
316 查看
刚刚才知道。。。DP就是动态规划啊。。。害我以为DP是多高深的东东。。。
一直不理解。。。这道题基本理解了,基本照抄的。。。偶是看着例子理解的。。这个就是第一个例子。。。
郁闷,还是多做做题哈~~~
输出一个三角形从上到下的最大和。。。和树差不多哈~
用递归的话,会重复计算,所以用动态规划啦~将计算的结果保存,避免重复计算~
因为我也刚开始学。。有些地方解释不好。。。见谅啦~以后几天攻DP~~
超时的做法。。。完全递归。。以身试法。。确实TLE。。。
用函数做的。。。DP
这个最好理解了,直接从下往上推~~~~~~
一直不理解。。。这道题基本理解了,基本照抄的。。。偶是看着例子理解的。。这个就是第一个例子。。。
郁闷,还是多做做题哈~~~
输出一个三角形从上到下的最大和。。。和树差不多哈~
用递归的话,会重复计算,所以用动态规划啦~将计算的结果保存,避免重复计算~
因为我也刚开始学。。有些地方解释不好。。。见谅啦~以后几天攻DP~~
超时的做法。。。完全递归。。以身试法。。确实TLE。。。
#include <stdio.h> #include <stdlib.h> int n; int tri[102][102]; int maxsum(int x,int y) { int sum1,sum2; if( x == n ) return tri[x][y]; sum1 = maxsum(x+1,y); sum2 = maxsum(x+1,y+1); if( sum1 > sum2 ) return sum1 + tri[x][y]; else return sum2 + tri[x][y]; } int main(void) { int i,j; scanf("%d",&n); for(i=1; i<=n; i++) for(j=1; j<=i; j++) scanf("%d",&tri[i][j]); printf("%d",maxsum(1,1)); system("pause"); return 0; }
用函数做的。。。DP
#include <stdio.h> #include <stdlib.h> #include <string.h> int max[102][102],tri[102][102]; int n; int maxsum(int x,int y) { if( x == n ) return tri[x][y]; if(max[x+1][y] == -1) max[x+1][y] = maxsum(x+1,y); if(max[x+1][y+1] == -1) max[x+1][y+1] = maxsum(x+1,y+1); if( max[x+1][y] > max[x+1][y+1] ) return max[x+1][y] + tri[x][y]; else return max[x+1][y+1] + tri[x][y]; } int main(void) { int n,i,j; memset(max,-1,sizeof(max)); scanf("%d",&n); for(i=1; i<=n; i++) for(j=1; j<=i; j++) scanf("%d",&tri[i][j]); printf("%d",maxsum(1,1)); system("pause"); return 0; }
这个最好理解了,直接从下往上推~~~~~~
#include <stdio.h> #include <stdlib.h> int main(void) { int i,j,n; int tri[102][102]; int max[102][102]; scanf("%d",&n); for(i=1; i<=n; i++) for(j=1; j<=i; j++) scanf("%d",&tri[i][j]); for(i=1; i<=n; i++) max [i] = tri [i]; for(i=n; i>=1; i--) for(j=1; j<i; j++) { if(max[i][j] > max[i][j+1]) max[i-1][j] = max[i][j] + tri[i-1][j]; else max[i-1][j] = max[i][j+1] + tri[i-1][j]; } printf("%d",max[1][1]); system("pause"); return 0; }
相关文章推荐
- POJ 1163 The Triangle (DP)
- POJ 1163 The Triangle(数塔模型dp)
- poj 1163 The Triangle【dp】
- POJ 1163: The Triangle(dp)
- [DP] POJ - 1163 The Triangle
- POJ 1163 The Triangle(基础DP)
- poj - 1163 - The Triangle(dp)
- poj 1163 The Triangle(DP水水 = =第二次写!)
- POJ 1163 The Triangle【DP】
- POJ 1163 The Triangle (DP)
- poj-1163-The Triangle-动态规划dp
- DP专题1 POJ 1163 The Triangle
- POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】
- poj1163 The Triangle ——DP入门题
- POJ 1163 The Triangle [DP]
- POJ 3176-Cow Bowling/POJ 1163-The Triangle(简单DP-数塔)
- poj1163——The Triangle(简单dp)
- poj 1163 the triangle(dp)
- POJ 1163 The Triangle (线性dp)
- POJ 1163 The Triangle (简单DP)