| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 281 人关注过本帖
标题:求教:同一个问题两个程序求高人指点。
取消只看楼主 加入收藏
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
收藏
已结贴  问题点数:20 回复次数:1 
求教:同一个问题两个程序求高人指点。
题目:输入一个三角形矩阵,第一行一个数,第二行两个数,第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
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.015687 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved