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;
    }
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    tcp/ip--百度百科
    Web service--百度百科
    .NET--百度百科
    ibatis--百度百科
    Struts2--百度百科
    spring--百度百科
    从头认识Spring-1.15 对SpEl的值的操作(1)-数值运算
    performSelector 方法的自己主动俘获特性
    图解WinHex使用入门
    LINQ使用与并行
  • 原文地址:https://www.cnblogs.com/gcter/p/7374750.html
Copyright © 2011-2022 走看看