zoukankan      html  css  js  c++  java
  • 数字三角形-poj

    题目要求:


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

      在上面的数字三角形中寻找在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。 
      三角形的行数大于1小于等于100,数字为 0 - 99

    输入格式: 
    5 //三角形行数。下面是三角形 

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

    解题思路:

      用二维数组存放数字三角形

      D[r][j] //表示第i行第j个元素的数值;

      MaxSum(i,j) //表示从根部到第i行最大路径的,所有数值的最大和;

    用递归的思想,在D(i,j)位置,下一个能走的位置为D(i+1,j)和D(i+1,j+1),进行递归

      MaxSum(i,j)=max(MaxSum(i+1,j),MaxSum(i+1,j+1))+D[i][j];

    代码:

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include <stdlib.h>
    using namespace std;
    int N;
    #define  Max 100
    int number[Max][Max];
    
    int Maxnum(int x,int y){return x>y?x:y;}
    int  Max_road_sum(int i,int j)
    {
        if(i==N)
            return number[i][j];
        else
        {
            int num1=Max_road_sum(i+1,j);
            int num2=Max_road_sum(i+1,j+1);
            return Maxnum(num1,num2)+number[i][j];
        }
    
    }
    int main()
    {
    
        int i,j;
        cin>>N;
        for(i=1;i<=N;i++)
        {
            for(j=1;j<=i;j++)
                cin>>number[i][j];
        }
        cout<<Max_road_sum(1,1)<<endl;
        return 0;
    }
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    leetcode 之Binary Tree Postorder Traversal
    关于java中this的一些总结
    Javascript的匿名函数与自执行
    js 闭包学习笔记
    滚动条到底自动加载数据
    AMD:异步模块定义
    Sass、LESS 和 Stylus
    【原创】Mysql设置自增长主键的初始值
    -webkit-animation的使用
    CSS滤镜
  • 原文地址:https://www.cnblogs.com/gcter/p/7374750.html
Copyright © 2011-2022 走看看