经典数塔(大神帮忙,我编的总是有问题)
图示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●0<三角形行数≤100; ●三角形中的数字为整数0,1,…99; 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5输入:输入数据的第一行为一个正整数T,表示有T组测试数据。每组测试数据的第一行为一个正整数N (0< N <= 100),表示这个数塔的行数。接下来N行,表示这个数塔。输出:对应每一组输入,在独立一行中输出一个正整数,表示计算出的最大值。输入样例:211573 88 1 02 7 4 44 5 2 6 5输出样例:130测试数据:输入:611237 2573 88 1 0 2 7 4 44 5 2 6 5688 97 26 39 16 47 94 25 66 4 64 49 20 36 27 37 87 29 37 10 40 1065 40 52 69 95 15 84 75 42 14 52 85 0 87 66 7 20 52 14 32 73 28 26 91 52 72 65 29 52 7 95 68 69 78 31 73 50 5 47 40 91 39 30 55 5 44 83 36 28 53 9 64 37 47 151574 67 51 64 47 54 69 97 1 31 89 14 11 3 72 68 21 70 46 87 68 5 6 6 29 51 40 71 18 38 15 10 53 19 55 7 9 70 16 78 89 66 84 7 83 80 19 22 82 19 40 44 35 44 35 85 54 22 16 92 43 21 59 25 18 94 30 19 19 2 33 54 93 95 76 66 43 46 93 36 12 43 26 47 55 26 54 27 23 11 67 51 86 88 42 37 92 61 36 25 18 24 17 16 69 6 14 10 61 86 52 79 37 96 83 47 44 83 88 20 输出:11030469727976 我晕 经过一天我还是自己搞出来了:cry#include<iostream>
using namespace std;
int a;
int N;
int jieguo;
int fmax(int a,int b)
{
return a>b?a:b;
}
int f(int row,int col)
{
if(N==1) return 1;
if(row==N-2)
return fmax(a,a)+a;
return fmax(f(row+1,col),f(row+1,col+1))+a;
}
int main()
{
int i,j,x,m=0,k=0;
cin>>x;
while(m<x)
{
cin>>N;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a=0;
for(i=0;i<N;i++)
for(j=0;j<i+1;j++)
cin>>a;
jieguo=f(0,0);
m++;
}
m=0;
while(m<k)
cout<<jieguo<<endl;
return 0;
}
飞鸟—漩涡鸣人 发表于 2014-7-3 11:41 static/image/common/back.gif
我晕 经过一天我还是自己搞出来了
#include
using namespace std;
怎么没大神帮我啊 我也进来学习,再仔细看看规律。。。。。。 河蟹代码 发表于 2014-7-3 12:09 static/image/common/back.gif
我也进来学习,再仔细看看规律。。。。。。
c++啊,不懂这东西。。。。。 c++啊,不懂这东西。。。。。 河蟹代码 发表于 2014-7-3 12:09
我也进来学习,再仔细看看规律。。。。。。
我也不是很懂:sweat: 爱莫能助,只能帮忙顶一下!!! c++啊,不懂这东西。。。。。 搞出来了就好 学习一下 {:1_1:}
页:
[1]