动态规划问题集锦

动态规划问题集锦

Input Output Explanation
5
8 32 12 16 4
4

The clique that contains 4 elements is (8, 32, 16, 4)

8
20 6 200 4 36 108 40 2
5

(20, 200, 4, 40, 2)

8
108 4 360 6 756 18 2 36
6

(108, 6, 756, 18, 2, 36)

 思路:先把数组排序,再对每一个元素计算当包含当前元素及其前面元素时,当前元素所在最大子集的大小。

附代码如下:

// Don't place your source in a package
import java.util.*;
import java.lang.*;
import java.io.*;

// Please name your class Main
class Main {
	public static void main (String[] args) throws java.lang.Exception {
	    Scanner in = new Scanner(System.in);
		int number = in.nextInt();
		int[] arr = new int[number];
		for(int i = 0; i < number; i++)
			arr[i] = in.nextInt();
		int[] arrflag = new int[number];
		for(int i = 0; i < arrflag.length; i++)
			arrflag[i] = 1;
		int answer = 0;
		Arrays.sort(arr);
		for(int i = 1; i < arr.length; i++) {
			for(int j = 0; j < i; j++) {
				if(arr[i] % arr[j] == 0 && arrflag[i] < arrflag[j] + 1)
					arrflag[i] = arrflag[j] + 1;
			}
			if(arrflag[i] > answer)
				answer = arrflag[i];
		}
		System.out.println(answer);
	}
}