poj1163 The Triangle
The Triangle
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 27017 | Accepted: 15824 |
Description
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
(Figure 1)
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
#include <iostream>
#include <algorithm>
using namespace std;
int maxnum(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int main(int argc, char* argv[])
{
int i,j;
int N;
scanf("%d", &N);
int balls[350][350];
for (i = 0; i < N; ++i)
for (j = 0; j <=i; ++j) scanf("%d", &balls[i][j]);
int DP[350];
memset(DP, 0, sizeof(DP));
DP[0] = balls[0][0];
for (i = 1; i < N; ++i)
for (j = i; j >=0; --j)
{
if(j == i) DP[j] = DP[j - 1] + balls[i][j];
else if (j == 0) DP[j] = DP[j] + balls[i][j];
else
DP[j] = maxnum(DP[j - 1],DP[j]) + balls[i][j];
};
cout << *max_element(&DP[0], &DP[N])<<endl;
return 0;
}
浙公网安备 33010602011771号