The cows don't use actual bowling balls when they go bowling. They each take a number (in the range 0..99), though, and line up in a standard bowling-pin-like triangle like this:
Given a triangle with N (1 <= N <= 350) rows, determine the highest possible sum achievable.
Input 7
3 8
8 1 0
2 7 4 4
4 5 2 6 5Then the other cows traverse the triangle starting from its tip and moving "down" to one of the two diagonally adjacent cows until the "bottom" row is reached. The cow's score is the sum of the numbers of the cows visited along the way. The cow with the highest score wins that frame. Given a triangle with N (1 <= N <= 350) rows, determine the highest possible sum achievable.
Line 1: A single integer, N
Lines 2..N+1: Line i+1 contains i space-separated integers that represent row i of the triangle.
OutputLines 2..N+1: Line i+1 contains i space-separated integers that represent row i of the triangle.
Line 1: The largest sum achievable using the traversal rules
Sample Input5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5Sample Output
30Hint
Explanation of the sample:
7
*
3 8
*
8 1 0
*
2 7 4 4
*
4 5 2 6 5The highest score is achievable by traversing the cows as shown above.
#include<cstdio>
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
int s[400][400];
int grade[400][400];
int main(){
int n;
cin>>n;
memset(s,0,sizeof(s));
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
cin>>s[i][j];
}
}
/*for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<s[i][j];
}
cout<<endl;
}*/
for (int i=n-2;i>=0;i--){
for (int j=0;j<i+1;j++){
s[i][j]+=max(s[i+1][j],s[i+1][j+1]);
}
}
cout<<s[0][0]<<endl;
return 0;
}倒着遍历一遍就好了
在一场别开生面的保龄球比赛中,参赛的奶牛们不是通过投掷保龄球来比赛,而是通过选择路径来获得尽可能高的分数。比赛在一个三角形布局中进行,每个位置有一个得分值。参赛者从顶部开始,每次向下移动到相邻的两个位置之一,目标是在到达底部时获得最高的总分。
4897

被折叠的 条评论
为什么被折叠?



