PTA A1007&A1008

四日目

A1007最大サブシーケンス和(25分)

タイトル内容

K整数{Nのシーケンス所与1、N 2、...、N K }。連続的なサブシーケンスは、{Nと定義されるI、N I + 1、...、NのJ
}1≤i≤j≤K。最大のサブシーケンスは、その要素の最大の合計を持っている連続サブシーケンスです。例えば、所与の配列{-2、11 -4、13 -5、-2}、最大サブシーケンスは、最大合計が20であると{11、-4、13}であり、
今では最大を見つけることになっています一緒に最大のサブシーケンスの最初と最後の番号の合計、。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは2行を占めています。最初の行は、正の整数K(≤10000)を含みます。2行目は空白で区切られた、K番号を含んでいます。

出力仕様:

各テストケースのために、一緒に第一及び最大サブシーケンスの最後の数と一行最大和で出力、。数字は1つのスペースで区切る必要がありますが、行の末尾に余分なスペースがあってはなりません。最大サブシーケンスが一意でない場合には、出力(サンプル場合によって示されるように)最小のインデックスiおよびjを有するもの。すべてのK番号が負の場合、その最大の和が0になるように定義され、そしてあなたが最初に全体のシーケンスの最後の番号を出力することになっています。

サンプル入力:

10
-10 1 2 3 4 -5 -23 3~7 -21

サンプル出力:

10 1 4

単語

連続

英語/kən'tɪnjʊəs/ US /kən'tɪnjʊəs/
ADJ、連続継続的な;.続行エンドレス

索引

英語/ 'ɪndɪsiːz/ US /' ɪndɪsiz/

率n ;.ディレクトリ(インデックス複合体)

トピック分析

データ構造MOOCコースで最大のサブ列との問題は、祖母が好き再び言った、と彼は書いた、忘れられた少しを書く時間が、その後、前のコードになりました。ああ見て耐えることができない= - =、彼は再びそれを書き換えることをおばあちゃんのビデオそれを再度見直し、解決策は、動的プログラミングをすると言われて、理解していませんでした。

特定のコード

#含ん&ltstdio.h> 含める&ltstdlib.h> 
に#define MAXSIZE 10000 
int型N。
INT [MAXSIZE]; 
int型開始、maxbegin、maxend。
int型maxsum = -1、合計。

INTメイン(ボイド)
{ 
    scanf関数( "%のD"、&N)。
    以下のために(INT i = 0; iが++; iがNを<) "%d個"、&[i])とscanf関数と、
    以下のために(INT i = 0; iがNを<; iは++)
    { 
        合計+ = A [i]は、
        IF(和> maxsum)
        { 
            maxsum =和。
            maxbegin =始めます。
            maxend = I; 
        } 
        (合計<0)であれば
        { 
            I + 1 =始めます。
            合計= 0;
    }
    IF(maxsum == -1)
        のprintf( "%D%D%D"、和、[0]、[N - 1])。
        のprintf( "%D%D%D"、maxsum、[maxbegin]、[maxend])。
    システム(「一時停止」)。
}

参考ブログ

[C / C ++]の最大サブシーケンス和/最大のサブ列と問題

A1008エレベーター(20分)

タイトル内容

私たちの街で最も高い建物は一つだけのエレベーターがあります。要求リストは、N正の数で構成されています。数字はどの階でエレベーターが指定された順序で、停止します表します。1つのフロアを下に移動するために1階までエレベーターを動かすために6秒かかり、そして4秒。エレベーターは、各停留所で5秒間留まります。
指定された要求のリストについては、リスト上の要求を満たすために費やした時間の合計を計算することです。エレベーターは先頭の0番目の階にあり、要求が満たされたとき階に戻ることはありません。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは、nは正の数字が続く正の整数Nを含有します。入力のすべての数字は100未満です。

出力仕様:

各テストケースのために、単一の行に合計時間を印刷します。

サンプル入力:

3 2 3 1

サンプル出力:

41

単語

要求

英語/rɪ'kwest/ US /rɪ'kwɛst/

。N-要求、必要
クレーム要求VT。

示します

英語/dɪ'nəʊt/ US /dɪ'not/
VT。、前記指示

指定されました

英語/spesɪfaɪd/ US /spɛsɪfaɪd/

。V指定し、詳細な説明(過去分詞の指定)
所定ADJ、詳細な説明

満たす

英語/ ful'fil / US / ful'filの/
VTを果たす;達成;満たす;エンド(等しい果たします)

トピック分析

学生はそれを追加し、減算、何も言うことはありません。

特定のコード

#含ん&ltstdio.h> 含める&ltstdlib.h> 

int型N; 
最後のint; 
int型の時間。

INTメイン(ボイド)
{ 
    scanf関数( "%のD"、&N)。
    (私は++; iがNを<I 0 = INT)のために
    { 
        INT N。
        scanf関数( "%のD"、&N); 
        int型温度= N。
        N = N -最後。
        (N> 0)であれば
            時刻+ = N * 6。
        そうでなければ(N <0)であれば
            4×時間+ =(-n)。
        時間+ = 5; 
        最後=温度; 
    } 
    のprintf( "%dの"時間)。
    システム(「一時停止」)。
}

おすすめ

転載: www.cnblogs.com/z-y-k/p/11528920.html