今日、私は最も長い増分サブシーケンスを見つけるという問題に遭遇しました。それを読んだ後、私はそれをJavaに実装しようとしました。ここで最も長い増分サブシーケンスについては詳しく説明しません。 BaiduまたはGoogleで使用できます。以下は実装コードです。
注:コードのこのセクションで実装されている関数は
(1)10個の要素を持つ配列をランダムに生成し、その最長増分サブシーケンス(2)出力(2)長さの1つで終了する最長増分サブシーケンスの長さを出力します
特定の実装のアイデアはコメントに詳細に示されていますが、これは比較的簡単ですので、ここでは繰り返しません。
Import java.util.arrays; Import Java.util.random; public class lis {public static void main(string [] args){system.out.println( "ランダム配列の生成..."); lis lis = new lis(); int [] oldArray = lis.randomarray(); for(int i = 0; i <oldarray.length; i ++){system.out.print(oldarray [i]+""); } system.out.println(); System.out.println( "最も長い増分サブシーケンスの長さは"); lis.lisget(oldarray); } public int [] randomArray(){random random = new Random(); int [] randomArray = new int [10]; for(int i = 0; i <10; i ++){randomArray [i] = random.nextint(10); } rundamerayを返します。 } public void lisget(int [] arrayl){int [] lislength = new int [arrayl.length]; //現在の要素を(int i = 0; i <arrayl.length; i ++){// lislength [i] = 1; } int max = 1; for(int i = 1; i <arrayl.length; i ++){for(int j = 0; j <i; j ++){if(arrayl [j] <arrayl [i] &&(lislength [j] +1)> lislenged [i]){lislength [i] = lislength [j] +1; } if(max <lislength [i]){//現在の最も長い増分シーケンスの長さとサブシーケンスの最後の要素の位置を取得しますmax = lislength [i]; }}} system.out.println(max); system.out.println( "i番目の要素の最後での最長の増分サブシーケンス:"+arrays.toString(lislength)); //出力配列}}上記は、編集者がもたらす最も長い増分サブシーケンスJavaの単純な実装のコンテンツ全体です。それがあなたに役立ち、wulin.comをもっとサポートすることを願っています〜