USACO-Section 1.5 Number Triangles(DP)
2015-08-27 16:44
375 查看
描述
观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大和30
格式
PROGRAM NAME: numtriINPUT FORMAT:
(file numtri.in)
第一个行包含 R(1<= R<=1000) ,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。
OUTPUT FORMAT:
(file numtri.out)
单独的一行,包含那个可能得到的最大的和。
SAMPLE INPUT
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
SAMPLE OUTPUT
30
DP入门题。
状态转移方程:ans[j]=max(ans[j],ans[j+1])+num[i][j];
/* ID: your_id_here PROG: numtri LANG: C++ */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int i,j,n,num[1005][1005],* ans; int main() { int i; freopen("numtri.in","r",stdin); freopen("numtri.out","w",stdout); while(1==scanf("%d",&n)) { ans=num[n-1]; for(i=0;i<n;++i) { ans[i]=0; for(j=0;j<=i;++j) scanf("%d",&num[i][j]); } for(i=n-2;i>=0;--i) for(j=0;j<=i;++j) ans[j]=max(ans[j],ans[j+1])+num[i][j]; printf("%d\n",ans[0]); } return 0; }
相关文章推荐
- mina高并发短连接报java.io.IOException: Too many open files
- 最小公倍数
- httpClient设置代理
- 为什么上传文件的表单里面要加一个属性ENCTYPE=MULTIPART/FORM-DATA?
- 常用的邮箱服务器(SMTP、POP3)域名、端口汇总
- SVN设置必须锁定
- Android应用层View绘制流程与源码分析
- core data 深入解析
- Tslib步骤以及出现问题的解决方案(转)
- 队列的插入 和出列 阻塞 时间 问题
- Windows Windows7 显示和隐藏 Administrator 账户
- 求镜像的二叉树
- c++实现ascii转unicode
- 新版flume+kafka+storm安装部署
- work plan
- PPT制作原则
- linux shell——小试牛刀
- RAID简单概述
- php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
- POJ 2187 Beauty Contest(凸包)