挑戦は最も長く増加しているサブシーケンスを見つけるために最も短い実装を書くことです。
例:Sをシーケンス1 5 7 1 8 4 3 5 [Sの長さ= 8]とする
- 長さ0のサブシーケンスが1つあります[増加するとみなします]
- 長さ1の6つのサブシーケンス{1,5,7,8,4,3} [これらはすべて増加していると見なされます]
- (7 * 8)/ 2の長さ2のサブシーケンス[ただし、重複を削除します]、増加するサブシーケンスは強い黒で表示されます。
{ 15,17、11、18,14,13,57、51、58、54,53,55,71、78、74,73,75,84,83,85,43、45,35 }
[厳密に増加するサブシーケンスにのみ関心があることに注意してください]
[ シーケンス内の要素の順序は変更できないため、シーケンス例にはサブシーケンス[37]はありません]
- 1578である長さ4のサブシーケンスが増加していますが、長さ5のサブシーケンスはありません。したがって、最大の増加サブシーケンス= 4の長さを考慮します。
入力:
a 1 a 2 ... a N (シーケンス)
すべての数値は10 3
N <= 1000 より小さい正の整数です
出力:
入力シーケンスの最も長く増加するサブシーケンスの長さを示す1つの整数。
sample input(1)
1 2 4 2 5
sample output(1)
4
sample input(2)
1 5 7 1 8 4 3 5
sample output(2)
4
コードをタイムリーに実行する必要があります。ここに送信する前に、このケースでコードをテストしてください(リンクには290バイトのc ++ 11ソリューションが含まれています)
ファイル/ stdinから、または関数パラメーターとして入力を取得し、出力をファイル/ stdoutに出力するか、関数を記述する場合に値を返すことができます。
スコアボード
function f(){...})または内部関数(ちょうど...)のバイトをカウントする必要がありますか?外部関数を数える場合、匿名関数は許可されますか?