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

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
快速回复:三角形最大和的问题~~求高手帮忙!
数据加载中...
 
   



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

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