poj 1163 The Triangle &poj 3176 Cow Bowling (dp)
题意:输入一个n层的三角形。第i层有i个数,求从第1层到第n层的全部路线中。权值之和最大的路线。
规定:第i层的某个数仅仅能连线走到第i+1层中与它位置相邻的两个数中的一个。
#include<stdio.h>
#include<string.h>
int a[105][105],f[105][105];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,n,k;
while(scanf("%d",&n)!=EOF){
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
scanf("%d",&a[i][j]);
memset(f,0,sizeof(f));
k=0;
f[1][1]=a[1][1]; //第一个数肯定要加
for(i=2;i<=n;i++){
for(j=1;j<=i;j++){
if(j==1) //在左边界时
f[i][j]=f[i-1][j]+a[i][j];
else if(j==i) //在右边界时
f[i][j]=f[i-1][j-1]+a[i][j];
else //不在边界时
f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];
}
}
for(i=1;i<=n;i++) //比較全部可能的大小
k=max(k,f[n][i]);
printf("%d\n",k);
}
return 0;
}
优化后:
#include<stdio.h>
#include<string.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,n,k,f[105][105];
while(scanf("%d",&n)!=EOF){
memset(f,0,sizeof(f)); //初始化为0
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
scanf("%d",&f[i][j]);
k=0;
for(i=2;i<=n;i++)
for(j=1;j<=i;j++)
f[i][j]+=max(f[i-1][j-1],f[i-1][j]); //由于在边界左右没数的地方都初始化为0了。加上后不会产生影响
for(i=1;i<=n;i++)
k=max(k,f[n][i]);
printf("%d\n",k);
}
return 0;
}
poj 1163 The Triangle &poj 3176 Cow Bowling (dp)的更多相关文章
- POJ 3176 Cow Bowling(dp)
POJ 3176 Cow Bowling 题目简化即为从一个三角形数列的顶端沿对角线走到底端,所取得的和最大值 7 * 3 8 * 8 1 0 * 2 7 4 4 * 4 5 2 6 5 该走法即为最 ...
- POJ 1163 The Triangle(简单动态规划)
http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- POJ 3176 Cow Bowling
Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13016 Accepted: 8598 Desc ...
- OpenJudge/Poj 1163 The Triangle
1.链接地址: http://bailian.openjudge.cn/practice/1163 http://poj.org/problem?id=1163 2.题目: 总时间限制: 1000ms ...
- POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49955 Accepted: 30177 De ...
- poj 3176 Cow Bowling(区间dp)
题目链接:http://poj.org/problem?id=3176 思路分析:基本的DP题目:将每个节点视为一个状态,记为B[i][j], 状态转移方程为 B[i][j] = A[i][j] + ...
- POJ 1163 The Triangle 简单DP
看题传送门门:http://poj.org/problem?id=1163 困死了....QAQ 普通做法,从下往上,可得状态转移方程为: dp[i][j]= a[i][j] + max (dp[i+ ...
- poj 3176 Cow Bowling(dp基础)
Description The cows don't use actual bowling balls when they go bowling. They each take a number (i ...
- POJ - 3176 Cow Bowling 动态规划
动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...
随机推荐
- 你所在的公司是如何实施DEVOPS的?
工欲善其事,必先利其器,现在大家在DevOps领域最关注的还是在工具层面.下面是我跟这么多公司接触下来,大家使用比较多的工具:1.监控工具比较老牌的就是Zabbix,Nagios,用Zabbix的感觉 ...
- d3 添加元素相关api
选择元素 d3.select([dom]) d3.selectAll([dom]) 添加元素 d3.select("body").append("p") 插入内 ...
- 【BZOJ4945&&UOJ317】游戏(2-sat,拓扑序)
题意: 思路: 输出方案时有一个优秀的性质可以利用: tarjan缩点之后点所属的分量编号是原图的反的拓扑序 所以只需要在两种方案内找到所属分量编号较小的那个就行了,用来满足(i,i')那个限制 #i ...
- py2exe多文件转换
# -*- coding: utf-8 -*- #import distutils #import py2exe #from distutils.core import setup #distutil ...
- 关于udo3d双目相机的嵌入式板子系统重装
遇到的问题: 1.下载压缩文件(.rar):在linux下下载一会就会停止 原因:linux下不支持.rar文件的下载,在windows下载即可 2.在windows下解压文件,结果为镜像文件(.im ...
- JD路径配置及myeclipse主题和提示设置
1. JDKAN安装及环境变量配置 安装jdk,注意记住安装路径(F:\Java\jdk1.8.0_121 )(个人爱好) 系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(F ...
- 【Exception】查看异常出现在具体的文件名/类名/方法名/具体行号
今天在处理异常日志保存过程中,想要获取到异常抛出在具体在那个文件,哪个类下的哪个方法中的具体第几行,所以具体实现如下 try{ Integer adminID = Integer.parseInt(a ...
- 深入理解Activity启动流程(四)–Activity Task的调度算法
本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启动的概要流程 深入理解Activity启动流程(二)- ...
- SQLAlchemy的查询操作Query
查询操作 查询子句使用session的.query()方法来获取Query查询对象.查询对象能够使用一些方法来对应一些查询子句,比如.order_by(),.limit(),.filter()等. 查 ...
- SilverLight:基础控件使用(1)
ylbtech-SilverLight-Basic-Control:基础控件使用(1) 本文详解控件有: Label, TextBox, PasswordBox, Image, Button , Ra ...