| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 281 人关注过本帖
标题:求教:同一个问题两个程序求高人指点。
只看楼主 加入收藏
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
收藏
已结贴  问题点数:20 回复次数:2 
求教:同一个问题两个程序求高人指点。
题目:输入一个三角形矩阵,第一行一个数,第二行两个数,第N行N个数.
      最后一行相邻两个数字分别与左上角和右上角的同一个数相加,和最大的赋给上一行那个被加数,求三角形顶端最后的值是多少。
Sample Input
1/*表示测试数据有几组*/

5/*三角矩阵行数*/
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
 
Sample Output
30
样例倒推的过程
7               7               7             7
3 8             3 8             3  8   ---->  23 21  ---> 30
8 1 0      ---> 8 1  0     ---> 20 13 10  
2 7 4 4         7 12 10 10
4 5 2 6 5

我的代码一:
#include"stdio.h"
#include"math.h"
int a[10000];

int main()
{int n,i,j,b;
 scanf("%d",&j);/*测试数据组数*/
 while(j--)
{scanf("%d",&n);
  for(i=1;i<=n*(n+1)/2;i++)
  scanf("%d",&a[i]);/*如果行数是n是五,则有5*6/2个元素*/
   
   while(n)
   {for(b=0;b<n-1;b++)
     {
      a[(n)*(n+1)/2-n-b]=max((a[n*(n+1)/2-n-b]+a[n*(n+1)/2-b]),(a[n*(n+1)/2-n-b]+a[n*(n+1)/2-b-1]));/*请问max函数是这样调用的吗?*/
        }
 
    n--;}
     

  printf("%d\n",a[1]);

   }

  }
与代码一差不多,用的二维数组,代码二也有问题,如下:
#include"stdio.h"
#include"math.h"
int a[100][100];

int main()
{int a,n,i,j;
 scanf("%d",&a);
 while(a--)
{scanf("%d",&n);
  for(i=0;i<5;i++)
  { for(j=0;j<=i;j++)
   scanf("%d",&a[i][j]);}/*这里编译不能通过不知道为什么,二维数组不可以这样赋值么?*/
   
   while(n--)
   {  
    for(i=3;i>=0;i--)
     { for(j=i;j>=0;j--)
          a[i][j]=max(a[i+1][j]+a[i][j],a[i+1][j+1]+a[i][j]);        
      }
    }
     

  printf("%d\n",a[0][0]);

   }

  }
搜索更多相关主题的帖子: 高人 
2009-07-30 22:57
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:20 
程序代码:
#include "Stdio.h"
#define N 5

int main()
{
    int a[N][N]={0};
    int i,j,sum1,sum2;

    printf("pls enter the number:");
    for(i=0;i<N;i++)
        for(j=0;j<=i;j++)
            scanf("%d",&a[i][j]);

    for(i=N-2;i>=0;i--)
        for(j=0;j<=i;j++)
        {
            sum1=a[i][j]+a[i+1][j];
            sum2=a[i][j]+a[i+1][j+1];
            a[i][j]=(sum1>sum2)?sum1:sum2;
        }

    printf("%d",a[0][0]);

    return 0;
}

你上面max要自己写的啊,(x>y)?x:y
用这种方式。。

[[it] 本帖最后由 soler 于 2009-7-31 01:03 编辑 [/it]]
2009-07-31 00:52
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
收藏
得分:0 
回复 2楼 soler
我一直以为在“math.h”下有这个基本函数,max(表达式1,表达式2,...表达式n)
2009-07-31 11:35
快速回复:求教:同一个问题两个程序求高人指点。
数据加载中...
 
   



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

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