トピック出典:羅区
タイトル説明
有するN × Nの正方形図(N ≤ 9 他のボックス番号に置かれている間グリッドは、我々は、いくつかの正の整数を埋めるある)、0。以下に示すように(実施例参照)に示します。
A
0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B
グラフの左上隅から誰か出発点Aは、あなたがの右下隅に達するまで、あなたはまた、右に行くことができ、歩くことができますBポイントを。(除去市松数がなった後通じ途中で、彼は正方形の数を削除することができます0)。
人する点の二点Bの合計を取るは、見つけることを試みる2つの取得した最大数の合計ように、そのような経路のセクションを。
入出力フォーマット
入力フォーマット:
第一幕入力整数N (で表されるN × Nの正方形図)は、各ラインは、次の3つの整数を有し、第3の数のための位置の数の上に配置され、最初の二つの位置を示しています。シングルライン0は、入力の終わりを示します。
出力フォーマット:
出力のみ整数を表し、2は最大のパスを取得し、。
サンプル入力と出力
説明
グループIVのタイトルを改善するためNOIP 2000
解像度:
この問題は、と本当にパスP1006ノート髪ではなく、少しでも差が、同様に、CCFはあなたが本当に直面しているポイント。
私はノートを渡すの問題に対する解決策を書いた、突くこちら。この問題は、本当にすべてではない、何の違いを言わないことではありません。
参照コード:
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <CStringの> 4の#include <cmath> 5の#include <アルゴリズム> 6の#include < ストリング > 7の#include <cstdlib> 8の#include <キュー> 9#含む<ベクトル> 10 の#define INF 0x3f3f3f3f 11件 の#define PIのACOS(-1.0) 12 の#define N 101 13 の#define MOD 2520年 14 の#define E 1E-12 15 使って 名前空間STDを、 16 INT[ 11 ] [ 11 ]、DP [ 31 ] [ 20 ] [ 20 ]。 17 のint main()の 18 { 19 int型のn、X、Y、ヴァル。 20 のscanf(" %d個"、&N) 21 ながら(!CIN >> X >> Y >>ヴァル&& x = 0!&& Y = 0!&&ヴァル= 0 ) 22 [X] [Y] = ヴァル。 23 DPは[ 1 ] [ 1 ] [ 1 ] = [ 1 ] [ 1 ]。 24 以下のために(int型 iは= 2 ; I <= N * 2 - 1 ; I ++ ) 25 のための(INT X1 = 1 ; X 1 <=分(N、I); X 1 ++ ) 26 のための(int型 X2 = 1 ; X 2 <=分(N、I); X2は++ ){ 27 INT Y1 = I + 1 -x1、Y2 = I + 1 - X2。 28 DP [I] [X1] [X2] = MAX(MAX(DP [I- 1 ] [X1] [X2]、DP [I- 1 ] [X1- 1 ] [X2])、MAX(DP [I - 1 ] [X1- 1 ] [x2- 1 ]、DP [1-1 ] [X1] [x2- 1 ]))。 29 であれば(X1の==×2)DP [I] [X1] [X2] + = [X1] [Y1]。 30 他の DP [I] [X1] [X2] + = [X1] [Y1] + [X2] [Y2]。 31 } 32 COUT << DP [N * 2 - 1 ] [N] [N] << ENDL。 33 リターン 0 ; 34 }