| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 373 人关注过本帖
标题:三角形最大和的问题~~求高手帮忙!
只看楼主 加入收藏
sososolo
Rank: 1
来 自:内蒙古包头市
等 级:新手上路
帖 子:17
专家分:3
注 册:2010-10-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
三角形最大和的问题~~求高手帮忙!
三角形最大和问题

Time Limit:1000MS Memory Limit:65536K
Total Submit:79 Accepted:22

Description

现在经常有一些数学问题困扰着小明。有如下一个三角形,

7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

小明想求出从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。现在想请你编一个程序实现这个问题。
说明:
(1)每一步可沿左斜线向下或右斜线向下;
(2)1<三角形行数≤100;
(3)三角形中的数字为0,1,...,99。

Input

输入有多个实例。每个测试用例的第一行是三角形的行数n,接下来是n行数字,每行数字的个数由1开始,依次加1。

Output

输出每个测试用例的最大和(整数),每行1个。

Sample Input


5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

Sample Output


30

Source

这是我的代码 有点繁琐 但是我看不出哪儿不对了~求高手们帮我看看~~指出我的错误,谢谢~~

#include <stdio.h>
#define SIZE 10
int max(int x,int y)
{
    if(x>y)
        return x;
    else return y;
}

int main(void)
{
    int n,i,j,total,t=1;
    scanf("%d",&n);
    int a[20][20];
    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
            scanf("%d",&a[i][j]);
    }
   total=a[0][0];
for(i=0;i<n;i++)
     for(j=0;j<=i;j++)
     {
         if((a[i+1][j]>a[i+1][j+1])&&a[i+1][j]!=0&&a[i+1][j+1]!=0)
         total+=a[i+1][j];
         if((a[i+1][j]<a[i+1][j+1])&&a[i+1][j]!=0&&a[i+1][j+1]!=0)
             total+=a[i+1][j+1];
                  if((a[i+1][j]==a[i+1][j+1])&&a[i+1][j]!=0&&a[i+1][j+1]!=0)
         {
             if((max(a[i+2][j],a[i+2][j+1])>max(a[i+2][j+1],a[i+2][j+2]))&&a[i+2][j]!=0&&a[i+2][j+1]!=0&&a[i+2][j+2]!=0&&a[i+2][j+2]!=0)
                 total+=a[i+1][j];
             else total+=a[i+1][j+1];
         }
     }
printf("%d",total);
printf("\n");
return 0;
}
搜索更多相关主题的帖子: 三角形 
2011-04-19 17:40
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:10 
楼主写的有点乱,我帮你写了一个,你看一下呗,不明白的你问我,我告诉你
程序代码:
#include <stdio.h>

int main() {
    short a[101][100] = {0}, i, j, k, n;
    scanf("%hd %hd %hd %hd", &n, &a[0][0], &a[1][0], &a[1][1]);
    a[1][0] += a[0][0];
    a[1][1] += a[0][0];
    for (i = 2; i < n; i++) {
        scanf(" %hd", &k);
        a[i][0] = k + a[i - 1][0];
        for (j = 1; j <= i; j++) {
            scanf(" %hd", &k);
            a[i][j] = k + (a[i - 1][j - 1] > a[i - 1][j] ? a[i - 1][j - 1] : a[i - 1][j]);
        }
    }
    k = 0;
    for (i = 0; i < n; i++) {
        if (a[n - 1][i] > k) {
            k = a[n - 1][i];
        }
    }
    printf("%hd\n", k);
    return 0;
}
2011-04-19 18:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
动态规划问题  你也是包头的  加上好友吧


                                         
===========深入<----------------->浅出============
2011-04-19 19:14
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
我QQ 553069938

                                         
===========深入<----------------->浅出============
2011-04-19 19:15
快速回复:三角形最大和的问题~~求高手帮忙!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038245 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved