id=1163">链接:poj 1163

题意:输入一个n层的三角形。第i层有i个数,求从第1层到第n层的全部路线中。权值之和最大的路线。

规定:第i层的某个数仅仅能连线走到第i+1层中与它位置相邻的两个数中的一个。

状态方程:f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];

1163代码:

#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 3176


3176与上题题意一样,仅仅需将数组开大点就过了,我开的 f[355][355]

poj 1163 The Triangle &amp;poj 3176 Cow Bowling (dp)的更多相关文章

  1. POJ 3176 Cow Bowling(dp)

    POJ 3176 Cow Bowling 题目简化即为从一个三角形数列的顶端沿对角线走到底端,所取得的和最大值 7 * 3 8 * 8 1 0 * 2 7 4 4 * 4 5 2 6 5 该走法即为最 ...

  2. POJ 1163 The Triangle(简单动态规划)

    http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

  3. POJ 3176 Cow Bowling

    Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13016   Accepted: 8598 Desc ...

  4. OpenJudge/Poj 1163 The Triangle

    1.链接地址: http://bailian.openjudge.cn/practice/1163 http://poj.org/problem?id=1163 2.题目: 总时间限制: 1000ms ...

  5. POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49955   Accepted: 30177 De ...

  6. poj 3176 Cow Bowling(区间dp)

    题目链接:http://poj.org/problem?id=3176 思路分析:基本的DP题目:将每个节点视为一个状态,记为B[i][j], 状态转移方程为 B[i][j] = A[i][j] + ...

  7. POJ 1163 The Triangle 简单DP

    看题传送门门:http://poj.org/problem?id=1163 困死了....QAQ 普通做法,从下往上,可得状态转移方程为: dp[i][j]= a[i][j] + max (dp[i+ ...

  8. poj 3176 Cow Bowling(dp基础)

    Description The cows don't use actual bowling balls when they go bowling. They each take a number (i ...

  9. POJ - 3176 Cow Bowling 动态规划

    动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...

随机推荐

  1. jquery不同版本导致的checkbox设置了属性,但是没有选中效果

    由于本人好久不做B/S了,今天同学问我个问题才发现了jquery版本还是存在差异的,今天写的就是关于获取checkbox属性的方式(可能不应该叫属性了其实,后面就知道了). 看下面的代码截图吧 < ...

  2. 表单编码 appliation/x-www-form-urlencoded 与 multipart/form-data 的区别

    当表单使用POST方法时,表单数据提交到服务器端之前有两种编码类型可供选择.默认编码类型为 application/x-www-form-urlencoded,此时所有非字母数字类型的字符都需要转换为 ...

  3. 学习javascript设计模式之中介者模式

    1.中介者模式的作用就是解除对象与对象之间的紧耦合关系.增加一个中介者对象后,所有的相关对象都通过中介者来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介对象即可.中介者使各对象之间耦合 ...

  4. Python Challenge 第五关

    进入第五关,一张图和一行提示: pronounce it.右键源代码,只有一行注释: <!-- peak hell sounds familiar ? --> peak hell 听起来熟 ...

  5. AC日记——线段树练习5 codevs 4927

    4927 线段树练习5  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 有n个数和5种操作 add a b ...

  6. Glide加载图片问题记录

    Glide加载图片相比于Picasso而言性能较好,又比Fresco轻巧,而且又支持加载gif动图,是Google 推荐.专注平滑的滚动.简单易用.可扩展的一款图片加载框架.但是使用时还是会遇到一些问 ...

  7. 在centos7环境下建立MariaDB多实例

    环境全部基于vmware player 12 os: centos7 mariadb: mariadb-10.1.12-linux-x86_64.tar.gz 主要根据MariaDB给出的帮助文档,以 ...

  8. Codeforces Gym101502 J-取数博弈

    还有J题,J题自己并不是,套的板子,大家写的都一样,因为大家都是套板子过的,贴一下代码,等学会了写一篇博客... J.Boxes Game 代码: 1 //J. Boxes Game-取数博弈-不会, ...

  9. 优雅的使用ImageGetter

      https://daihanglin.github.io/2017/10/13/imageGetter/ 1. 使用ImageGetter的场景 Android中用于显示文本的控件为textVie ...

  10. git 撤回上一次commit中某一个不想添加的文件

    1. 假设我们修改了文件a,同时修改了IDE的配置文件b 2.此时我们只想添加文件a到commit中,却不小心将b也添加进去了 3.那么怎么撤回呢? 4.第一种方法 :重新提交commit 5. 第二 ...