[アルゴリズム概念]最大増分部分数列(LIS)
[アルゴリズム概念]最大増分部分数列(LIS)
Longest Increasing Subsequence
最大増分部分数列
→ある数列が左から右に並んでいる場合、その並び順を維持しながら徐々に大きくなる最長部分数列の問題を抽出する
SWEA最大増分部カウント問題
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringTokenizer st = null;
int[] arr = null;
int[] dp = null;
StringBuilder sb = new StringBuilder();
for(int tc=1;tc<=T;tc++) {
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
arr = new int[N];
dp = new int[N];
int maxValue = 0;
for(int i=0;i<N;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for(int i=0;i<N;i++) {
dp[i] = 1;
for(int j=0;j<i;j++) {
if(arr[i] > arr[j] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
}
}
if(maxValue < dp[i]) maxValue = dp[i];
}
sb.append("#"+tc+" "+maxValue+"\n");
}
System.out.println(sb);
}
}
Reference
この問題について([アルゴリズム概念]最大増分部分数列(LIS)), 我々は、より多くの情報をここで見つけました https://velog.io/@gandi0330/알고리즘-개념-최장-증가-부분-수열-LISテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol