聪明的kk和The Triangle(关于数塔)

昨天晚上,队长在讲背包问题时顺便讲了一下数塔,嘿嘿,昨天晚上真的是赚到了,原来看的东西有很多都不懂,昨天晚上,队长一点,如醍醐灌顶,哈哈!!

首先是The Triangle,这个题非常直白的将数塔的应用给体现出来了,其实数塔的思想就是从下往上来进行运算,不断的更新数组……

题目:The Triangle

原题地址:请猛击

#include<stdio.h> #define max(a,b) a>b?a:b //虽然很早都会用了,今天看了xiaod的代码,感觉很不错 int main() { int a,i,j,m[105][105]; scanf("%d",&a); for(i=1;i<=a;i++) for(j=1;j<=i;j++) scanf("%d",&m[i][j]); while(1) { a--; for(i=1;i<=a;i++) //不断往上更新最值 m[a][i]+=max(m[a+1][i],m[a+1][i+1]); if(a==1) break; } printf("%d\n",m[1][1]); return 0; }


打铁趁热,就顺便把另外一道以前看过的类似的题目也做一下……

题目: 聪明的kk

原题地址:请猛击

#include<stdio.h> #define max(a,b) a>b?a:b int main() { int m,n,i,j,map[21][21]; scanf("%d%d",&m,&n); for(i=1;i<=m;i++) for(j=1;j<=n;j++) scanf("%d",&map[i][j]); for(i=2;i<=m;i++) map[1][i]+=map[1][i-1]; for(i=2;i<=n;i++) map[i][1]+=map[i-1][1]; for(i=2;i<=m;i++) for(j=2;j<=n;j++) map[i][j]+=max(map[i][j-1],map[i-1][j]); printf("%d\n",map[m][n]); return 0; }


自己写的,自我感觉很不错,看了大牛的,才觉得自己还差得远呢……哎…………

#include<iostream> using namespace std; int f[22][22]; int main() { int n,m,c; cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { cin>>c; f[i][j]=max(f[i][j-1],f[i-1][j])+c; } cout<<f[m][n]<<endl; }


今天发现,原来每天的10点以后在寝室都是有时间的,以后的每天这个时候,都把自己收获的成果给记录下来吧,以鼓励自己,继续努力前行!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值