#include <iostream.h>
#include <cstdlib>
int triangle[100][100]={0};
int Sum(int n)
{//用于求路径经过数字的总数最大值
for(int row=n-2;row>=0;row--) //自底向上求解
{
for( int col=0;col<=row;col++)
{
if(triangle[row+1][col]>triangle[row+1][col+1]) //比较上一行的两个叶子节点大小,保存当前节点与较大叶子节点的和
{
triangle[row][col]+=triangle[row+1][col];
}
else
{
triangle[row][col]+=triangle[row+1][col+1];
}
}
}
return triangle[0][0]; //最优值在triangle[0][0]
}
void main(void)
{
int n;
cout<<"input.txt"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
cin>>triangle[i][j]; //输入每一行的元素
}
}
cout<<"output.txt"<<endl;
cout<<Sum(n)<<endl; //调用Sum()函数得到输出结果
}
没有合适的资源?快使用搜索试试~ 我知道了~
计算机算法设计与分析(动态规划 数字三角形问题)
共10个文件
pdb:2个
exe:1个
dsw:1个
5星 · 超过95%的资源 需积分: 31 84 下载量 147 浏览量
2011-04-21
18:56:14
上传
评论 4
收藏 123KB RAR 举报
温馨提示
问题描述:给字一个由n行数字组成的数字三角形,如图3-7所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 ★算法设计:对于给定的由n行数字组成的数字三角形,计算从三角形的项至底的路径经过的数字和的最大值。 ★数据输入:由文件input.txt提供输入数据。文件的第1行是数字三角形的计数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0~99之间。 ★结果输出:将计算结果输出到文件output.txt。文件第1行中的数是计算出的最大值。 7 3 8 8 1 0 2 7 4 4 4 5 3 6 5
资源推荐
资源详情
资源评论
收起资源包目录
二、动态规划.rar (10个子文件)
二、动态规划
3-7.opt 48KB
3-7.cpp 905B
Debug
3-7.exe 208KB
vc60.pdb 60KB
3-7.pdb 505KB
3-7.obj 7KB
3-7.dsp 3KB
3-7.plg 240B
3-7.dsw 514B
3-7.ncb 41KB
共 10 条
- 1
资源评论
- zh47053776632014-12-08不错,有很好的借鉴作用,可以学习下
- qq_164969852015-01-12不一定完全符合你的要求,使用c语言做的
jiangliangxiao
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功