javaee论坛

普通会员

225648

帖子

345

回复

359

积分

楼主
发表于 2019-11-03 06:36:25 | 查看: 102 | 回复: 1

一、问题:看图二、问题分析:每个整数只能出发向下移动到相邻的整数。显然如果是从上往下看的话,路径会有很多。这时候就用到了动态规划的思想,自底向上。从最下面一层一直到最上面,因此到最后a[0][0]就是问题的答案。那么如何表达呢?1、然后a数组从倒数第二行开始进行加法,2、得到a[0][0]结果。两步,轻轻松松。三、代码:如下

inta[100][100]={{2},{3,4},{6,5,7},{8,3,9,2}};voidsolve(){intn=4;//4是最后一行的列数,这样写不太明智for(inti=n-2;i>=0;i++)//倒数第二行开始往上走for(intj=0;j<=i;j++)//元素个数等于行数的大小{//下面代码也就是a[i][j]=a[i][j]+min(a[i+1][j],a[i+1][j+1])if(a[i+1][j]>a[i+1][j+1])a[i][j]+=a[i+1][j];elsea[i][j]+=a[i+1][j];}printf("%d\n",a[0][0])}voidmain(){sovle();}

普通会员

0

帖子

271

回复

305

积分
沙发
发表于 2023-09-26 23:14:09

标记一下

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017