POJ 1163The Triangle(dp或记忆化搜索)
来源:互联网 发布:传奇荣耀辅助软件 编辑:程序博客网 时间:2024/06/05 09:27
The Triangle
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 50846 Accepted: 30789
Description
73 88 1 02 7 4 44 5 2 6 5(Figure 1)
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
573 88 1 0 2 7 4 44 5 2 6 5
Sample Output
30
记忆化搜索确实比较垃圾,但是他确实dp的本质,搜索嘛。这里一定记忆下到每个点最大值,都这就没有意义了。
dp思想就很简单了,从上往下层层叠加,不断更新最大值,自己画画就清楚了。
搜索代码:
#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<cstring>#include<string>#include<vector>#include<map>using namespace std;#define mem(a,b) memset(a,b,sizeof(a))typedef long long ll;const int maxn = 1e3+5;const int ff = 0x3f3f3f3f;int n;int mp[maxn][maxn];int dp[maxn][maxn];int fs(int x,int y){if(x == n)return mp[x][y];if(dp[x][y]!= -1)return dp[x][y];//已经记录过最大值了直接返回就好了int max1 = fs(x+1,y);int max2 = fs(x+1,y+1);dp[x][y] = max(max1,max2)+mp[x][y];return dp[x][y];}int main(){int t;mem(dp,-1);scanf("%d",&n);for(int i = 1;i<= n;i++)for(int j = 1;j<= i;j++)scanf("%d",&mp[i][j]);printf("%d\n",fs(1,1));return 0;}
dp代码:
#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<cstring>#include<string>#include<vector>#include<map>using namespace std;typedef long long ll;const int maxn = 1e3+5;const int ff = 0x3f3f3f3f;int dp[maxn][maxn];int n;int main(){memset(dp,0,sizeof(dp)) ;scanf("%d",&n);for(int i = 1;i<= n;i++)for(int j = 1;j<= i;j++)scanf("%d",&dp[i][j]);int maxx = -1;for(int i = 1;i<= n;i++)for(int j = 1;j<= i;j++){dp[i][j] = max(dp[i-1][j]+dp[i][j],dp[i-1][j-1]+dp[i][j]);if(dp[i][j]> maxx)maxx = dp[i][j];}printf("%d\n",maxx);return 0;}
对于这个题来说两者耗时差不多。
更多精写文章
阅读全文
0 0
- POJ 1163The Triangle(dp或记忆化搜索)
- poj 1163 the triangle 记忆化搜索
- poj 1163 The Triangle (记忆化搜索)
- poj 1085 (Triangle War)状压dp+记忆化搜索
- POJ1085 The Triangle War: 记忆化搜索
- POJ1085 The Triangle War: 记忆化搜索
- 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 1088 (dp记忆化搜索)
- poj 1579(记忆化搜索)DP
- DP 记忆化搜索 poj 1088
- POJ 1088 滑雪(DP+记忆化搜索)
- POJ 1088 DP || 记忆化搜索
- JavaScript基础(补充) 个人笔记
- 欢迎使用CSDN-markdown编辑器
- java-源码解读-线程池实现原理-0
- 数据结构实验之排序四:寻找大富翁(堆排序)
- hdu3657 奇偶方格取数
- POJ 1163The Triangle(dp或记忆化搜索)
- scala+Maven工程读取jar包外的配置文件
- LAMP搭建环境 ubuntu16.04 apache7 + mysql+ phpmyadmin
- HTML5+CSS3自学笔记02-CSS特性、样式、优先级
- HDU6127(极角排序)
- eval函数的用法
- 【BZOJ】3430 [Usaco2014 Jan]Ski Course Rating 并查集
- ROS2探索总结(一)——ROS成长记
- 【脚本】自动截图并上传