很简单的递归,没什么好说的,贴代码,留纪念。

View Code
 1 /*{
 2 ID:jzy3209981
 3 PROG:numtri
 4 LANG:C++
 5 }*/
 6 #include<stdio.h>
 7 #include<iostream>
 8 #include<string.h>
 9 using namespace std;
10 
11 int numtriangle[1005][1005];
12 int result[1005];
13 int temporary[1005];
14 
15 void start(int n)
16 {
17     int i;
18     if(n==1)
19     {
20         temporary[0]=numtriangle[0][0];
21         result[0]=numtriangle[0][0];
22     }
23     else
24     {
25         start(n-1);
26         for(i=0;i<n;i++)
27         {
28             if(i==0)
29                 result[i]=temporary[i]+numtriangle[n-1][i];
30             else if(i==n-1)
31                 result[i]=temporary[i-1]+numtriangle[n-1][i];
32             else
33                 result[i]=temporary[i-1]>temporary[i]?temporary[i-1]+numtriangle[n-1][i]:temporary[i]+numtriangle[n-1][i];
34         }
35         for(i=0;i<n;i++)
36             temporary[i]=result[i];
37     }
38     return;
39 }
40 int main()
41 {
42     freopen ("numtri.in","r",stdin);
43     freopen ("numtri.out","w",stdout);
44     int n,max=0,i,j;
45     scanf("%d",&n);
46     for(i=0;i<n;i++)
47         for(j=0;j<=i;j++)
48             scanf("%d",&numtriangle[i][j]);
49     memset(result,0,sizeof(result));
50     memset(temporary,0,sizeof(result));
51     start(n);
52     for(i=0;i<n;i++)
53         if(result[i]>max)
54             max=result[i];
55     printf("%d\n",max);
56     return 0;
57 }

 

posted on 2012-07-13 20:41  醉春雨  阅读(156)  评论(0)    收藏  举报