Cow Bowling

Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 13481   Accepted: 8909

Description

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:

          7

        3   8

      8   1   0

    2   7   4   4

  4   5   2   6   5

Then 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.

Input

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.

Output

Line 1: The largest sum achievable using the traversal rules

Sample Input

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

Sample Output

30

Hint

Explanation of the sample:

          7

         *

        3   8

       *

      8   1   0

       *

    2   7   4   4

       *

  4   5   2   6   5

The highest score is achievable by traversing the cows as shown above.

数塔问题!!!又名数字三角形

递推方法

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#define N 351
using namespace std;
int main()
{
    int n,i,j,dp[N][N],map[N][N];
    scanf("%d",&n);
    for(i=1;i<=n;i++)
       for(j=1;j<=i;j++)
       {
            scanf("%d",&map[i][j]);
       }
    for(i=1;i<=n;i++)
        dp[n][i]=map[n][i];//最后一行,用新数组存好。运算时新数组其他为原始的0,计算更加好
    for(i=n-1;i>=1;i--)
        for(j=1;j<=i;j++)
            dp[i][j]=map[i][j]+max(dp[i+1][j],dp[i+1][j+1]);
//用到max()的时候,要么自己写一个max比较函数,要么用函数名 algorithm和using namespace std一起
    printf("%d",dp[1][1]);
    return 0;
}

Cow Bowling

时间: 2024-10-12 21:32:25

Cow Bowling的相关文章

POJ 3176(Cow Bowling )(就是简单的数塔,动态规划)

Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14206   Accepted: 9428 Description 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

poj 1163 The Triangle &amp;poj 3167 Cow Bowling (dp)

链接:poj 1163 题意:输入一个n层的三角形,第i层有i个数,求从第1层到第n层的所有路线中,权值之和最大的路线. 规定:第i层的某个数只能连线走到第i+1层中与它位置相邻的两个数中的一个. 状态方程:f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j]; 1163代码: #include<stdio.h> #include<string.h> int a[105][105],f[105][105]; int max(int a,int b)

POJ 3176:Cow Bowling

Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13464   Accepted: 8897 Description 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

POJ 3176 Cow Bowling 保龄球 数塔问题 DP

题目链接:POJ 3176 Cow Bowling Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14044   Accepted: 9310 Description The cows don't use actual bowling balls when they go bowling. They each take a number (in the range 0..99), though,

Cow Bowling POJ - 3176

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: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Then the other cows traverse the triangle

【POJ 3176】Cow Bowling

题 Description 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: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Then the other cows travers

poj 3176 Cow Bowling(dp基础)

Description 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: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Then the other cows traverse

poj 3176 Cow Bowling

题目链接:http://poj.org/problem?id=3176 思路: 基本的DP题目:将每个节点视为一个状态,记为B[i][j], 状态转移方程为 B[i][j] = A[i][j] + Max( B[i+1][j], B[i+1][j+1] ); 代码: #include <stdio.h> const int MAX_N = 350 + 10; int A[MAX_N][MAX_N], B[MAX_N][MAX_N]; int Max( int a, int b ) { retu

poj 3176 Cow Bowling(dp)

递推式dp[i][j]=max( dp[i-1][j] , dp[i-1][j-1] )+a[i][j]; ①第一次做数塔,不会输入.数塔的输入 1 for(int i=1;i <= n;i++) 2 { 3 for(int j=1;j <= i;j++) 4 { 5 scanf("%d",&a[i][j]); 6 } 7 } 1 #include <iostream> 2 #include <cstring> 3 #include <