レポートの手アルゴリズムデジタル三角形の第三章

1.実践トピック

7-1デジタル三角形(30)
 

図に示すように、n番目の行番号によって形成されるデジタル三角形を考えます。最大パスのデジタルサムが通過するように、三角形の上から下への経路を計算するためのアルゴリズム(左斜線又は右対角線に沿って下方に各ステップ)を設計しようとします。

QQのスクリーンショット20170929023616.jpg

入力フォーマット:

行n + 1が入力されます。

ライン1は、行の数は、1 <= N <= 100、nは三角形です。

次の行のnは、各行の数の三角形の数です。0..99間のすべての数字。

出力フォーマット:

出力パスの最大値。

サンプル入力:

ここでは、入力のセットを与えられています。例えば:

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

出力例:

出力に対応し、ここで考えます。例えば:

30

2.问题描述
  思路:从数字三角的的倒数第二行(n-1)【2,7,4,4】行开始往上,取(n-1)行的下一行,即第n行【4,5,2,6,5】,将(n-1)行的第一个元素2与它的下一行第一个元素4以及下一行的第二个元素5分别相加取最大值,即max(2+4,2+5),将max存入n-1行的第一个元素,依次循环得到从n行到n-1行的值存在n-1行。n-行继续向上,最后顶端的数字即最长路径数。
3.算法描述
-----------------------------------------------------------------------------------------------------------------------------------
書式#include <iostreamの>
名前空間stdを使用。
int型のres [1005] [1005];
[1005] [1005] INT。
メインint型()
{
    N INT、MAXN = 0。
    scanf関数( "%のD"、&N);
    以下のために(INT i = 1; iが<= N; iは++します)
    {
        (int型J = 1; J <= iであり、j ++)について
        {
             CIN >> [I] [J]。
        }
    }
    以下のために(INT I = N-1、I> 0; i--)
    {
        (int型J = 1; J <= iであり、j ++)について
        {
            [I] [J] + = MAX([I + 1] [j]は、[I + 1] [J + 1])。
        }
    }
    COUT << [1] [1] << ENDL。
    0を返します。
}
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------
3.アルゴリズムと空間分析の時間複雑
時間計算量はO(N2)は、動的計画時の循環のための2つのフロア、そして一つだけの文を持っています。空間複雑度は、O(N 2)であり、2次元アレイを作成し、各列の各行は、O(N 2)であり、nは。
4.経験(収穫と疑問要約の練習)
突然アイデアがあるまでは考えて始めていない三角数、。それぞれの質問には慎重に考える必要があるために、コードをノックして急いではありません。

おすすめ

転載: www.cnblogs.com/lycsuper/p/11703468.html