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行的最后一个点,所以在搜索前,把那一行的其他数都清零就好了。这样保证会走到那个位置

  • 相关阅读:
    从代码书写理解指针,很重要
    指针参数 引用参数
    [转载]c/c++ 操作sqlite
    [转载]C#.NET DataTable扩展 ToList/Get/OrderBy/Where/ToPage
    [转载]宏定义
    【转载】scanf,sscanf高级用法
    C开发机顶盒实战应用代码片段
    指针精华口诀,短小精悍
    C# linq泛型 字典集合 排序
    c开发机顶盒实战应用代码片段2
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/5267955.html
Copyright © 2011-2022 走看看