zoukankan      html  css  js  c++  java
  • SX的数字三角形

    试题描述

    SX数学很强,所以把数学问题都交给她了。还是那个数字三角形(共 n 行,第 i 行有 i 个数),从第一行走到第 n 行,每一步只有两种选择,要么往正下走一步,要么往右下走一步。必须经过某一个点,使所走过的的点的数字之和和最大。各行的数都从最左开始,若一行有多个数则两两之间用一个空格分隔。

    输入
    第 1 行包含一个数 n,表示共有 n 行,第 2 到 n+1 行为每个的数值,路程必须经过坐标点(n/2,n/2)。
    输出
    一个数,表示题目要求的最大值。
    输入示例
    2
    1
    1 1
    输出示例
    2
    其他说明
    数据范围:1<=n<=100,三角形中各个数均不超过100。
     

    和动态的数字三角形是一个系列,并且是升级版

     1 #include <iostream>
     2 
     3 using namespace std;
     4 int a[101][101],b[101][101];
     5 int main()
     6 {
     7     int n,i,j;
     8     scanf("%d",&n);
     9     for(i=1;i<=n;i++)
    10         for(j=1;j<=i;j++) scanf("%d",&a[i][j]);
    11     for(i=1;i<n/2;i++) a[n/2][i]=0;
    12     for(i=1;i<=n;i++)
    13     {
    14         for(j=1;j<=i;j++)
    15         {
    16             if(a[i-1][j-1]>a[i-1][j]) b[i][j]=a[i][j]+b[i-1][j-1];
    17             else b[i][j]=a[i][j]+b[i-1][j];
    18         }
    19     }
    20     int ans=0;
    21     for(i=1;i<=n;i++)
    22         if(b[n][i]>ans) ans=b[n][i];
    23     printf("%d",ans); 
    24     return 0;
    25 }
    SX的数字三角形

     我们发现,坐标点(n/2,n/2)就是第n/2行的最后一个点,所以在搜索前,把那一行的其他数都清零就好了。这样保证会走到那个位置

  • 相关阅读:
    记一个python字典和json.dumps()的坑
    多态
    接口
    继承
    Python---进阶---文件操作---获取文件夹下所有文件的数量和大小
    Python---进阶---文件操作---按需求打印文件的内容
    Python---进阶---文件操作---比较文件不同
    Python---进阶---函数式编程---按照权重排序
    Python---进阶---函数式编程---lambda
    man clock
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/5267955.html
Copyright © 2011-2022 走看看