zoukankan      html  css  js  c++  java
  • 金币

    题目描述

    小招在玩一款游戏:在一个N层高的金字塔上,以金字塔顶为第一层,第i层有i个落点,每个落点有若干枚金币,在落点可以跳向左斜向下或向右斜向下的落点。若知道金字塔的层数N及每层的金币数量分布,请计算小招在本次游戏中可以获得的最多金币数量。

    输入描述:

    输入共有N + 1行(N ≤ 1024),第一行为高度N,第二行至N + 1行 ,为该金字塔的金币数量分布。

    输出描述:

    输出金币数量。

    示例1

    输入

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

    输出

    31

    #include <stdio.h>
    #include <stdlib.h>
      
    int main()
    {
        int n;
        int i,j;
        scanf("%d",&n);
        int num[n][n];
        int max;
        int sum[n][n];
        for(i=0; i<n; i++)
        {
            for(j=0; j<=i; j++)
                scanf("%d",&num[i][j]);
        }
        sum[0][0]=num[0][0];
        for(i=1; i<n; i++)
        {
            for(j=0; j<=i; j++)
                if(j==0)
                    sum[i][j]=sum[i-1][0]+num[i][j];//数字在左腰的情况
                else if(j==i)
                    sum[i][j]=sum[i-1][i-1]+num[i][j];//数字在右腰的情况
                else//余下的普通情况
                {
                    max=sum[i-1][j-1];
                    if(sum[i-1][j]>sum[i-1][j-1])
                        max=sum[i-1][j];
                    sum[i][j]=num[i][j]+max;
                }
        }
        max=sum[n-1][0];
        for(j=0; j<n; j++)
        {
            if(sum[n-1][j]>max)
                max=sum[n-1][j];
        }
        printf("%d",max);
        return 0;
    }
    

    参考:oj3134:动态规划——数字金字塔

  • 相关阅读:
    myeclipse连接数据库oracle
    一个利用反射进行对象拷贝的例子
    制作jar包
    反射机制(reflection)动态相关机制
    显示hibernate的sql语句
    三大框架之hibernate的反转
    mysql索引及sql调优
    redis面试题
    mysql索引原理
    详谈django中跨域问题
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12801464.html
Copyright © 2011-2022 走看看