码迷,mamicode.com
首页 > 其他好文 > 详细

数字三角形求解

时间:2015-04-10 17:15:14      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

题目:

如图所示,
                3
            2        3
        4    3    4    4

7个数字构成三层的数字三角形,从属关系为树形关系。要求按照从属关系,在每一层选择一个数,使最后的和最大。

分析:

如果从下往下选择的话,越往下选择越多,问题就越复杂。考虑从下往上选择,采用动态规划法,从局部开始考虑。局部最大,则构成整体最大。我是用C++写的。

代码:

技术分享
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int triangle[100][100];
 6     int i;
 7     int j;
 8     int n;
 9     cout<<"请输入三角形的层数:";
10     cin>>n;
11     while(n!= 0)
12     {
13         cout<<"请依次输入每层三角形的值:"<<endl;
14         for(i=1;i<=n;i++)
15         {
16             for(j=1;j<=i;j++)
17             {
18                 cin>>triangle[i][j];
19             }
20         }
21 
22         for(i=n-1;i>0;i--)
23         {
24             for(j=i;j>0;j--)
25             {
26                 triangle[i][j]+=triangle[i+1][j+1]>triangle[i+1][j]?triangle[i+1][j+1]:triangle[i+1][j];
27             }
28         }
29         cout<<"该数字三角形的各层和的最大值为:"<<triangle[1][1]<<endl;
30         break;
31     }
32     return 0;
33 }
View Code

数字三角形求解

标签:

原文地址:http://www.cnblogs.com/yangtze-yufei/p/4414761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!