【部分列】STEP: 1 最長部分増加列 (paizaランク B 相当) 解答例 – PHP編【DPメニュー】
【DPメニュー】 > 【部分列】STEP: 1 最長部分増加列 (paizaランク B 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $n = trim(fgets(STDIN)); $dp[1] = 1; $a[1] = trim(fgets(STDIN)); for($i = 2;$i <= $n;$i++){ $test = trim(fgets(STDIN)); $a[$i] = $test; $dp[$i] = 1; // 木 i のみからなる部分列の長さ for($j = 1;$j <= ($i - 1);$j++){ if($a[$j] < $a[$i]){ $dp[$i] = max($dp[$i], $dp[$j] + 1); // 最後が木 j であるような増加部分列の末尾に木 i をくっつける } } } echo max($dp); ?> |
