UVa 103 - Stacking Boxes
2013-06-16 11:12
471 查看
/*UVa 103 - Stacking Boxes * */ import java.util.Arrays; import java.util.Scanner; class Main { public static final int MAXD = 15;// 最大维数 public static final int MAXN = 35;// 最大box数目 int[][] g = new int[MAXN][MAXN]; int[] d = new int[MAXN];// 从i出发的最大长度 int[][] box = new int[MAXN][MAXD]; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Main m = new Main(); while (scanner.hasNext()) { int k = scanner.nextInt(); int n = scanner.nextInt(); Arrays.fill(m.d, 0); for (int i = 0; i < MAXN; i++) { Arrays.fill(m.g[i], 0); Arrays.fill(m.box[i], 0); } for (int i = 1; i <= k; i++) { for (int j = 1; j <= n; j++) { m.box[i][j] = scanner.nextInt(); } Arrays.sort(m.box[i], 1, n + 1);// n+1 不包含在内 for (int j = 1; j < i; j++) { if (m.in(i, j, n)) {// box[j]可以被box[i]包含 m.g[j][i] = 1; } else if (m.in(j, i, n)) { m.g[i][j] = 1; } } } int max = 1, index = 1; for (int i = 1; i <= k; i++) { int t = m.dp(i, k); if (t > max) { max = t; index = i; } } System.out.println(max); m.print(index, k); System.out.println(); } } private boolean in(int i, int j, int n) { int[] t1 = box[i]; int[] t2 = box[j]; for (int k = 1; k <= n; k++) { if (t1[k] <= t2[k]) return false; } return true; } private int dp(int i, int k) { if (d[i] > 0) return d[i]; d[i] = 1; for (int j = 1; j <= k; j++) { if (g[i][j] == 1) { int temp = dp(j, k) + 1; if (temp > d[i]) d[i] = temp; } } return d[i]; } private void print(int i, int k) { System.out.printf("%d ", i); for (int j = 1; j <= k; j++) { if (g[i][j] == 1 && d[i] == d[j] + 1) { print(j, k); break; } } } }
相关文章推荐
- uva 103 Stacking Boxes (DAG)
- UVA - 103 Stacking Boxes
- UVa 103 Stacking Boxes 堆砌盒子(DP 最长条件子序列)
- UVa103 - Stacking Boxes
- UVA 103 - Stacking Boxes
- UVA - 103 Stacking Boxes
- UVa 103 Stacking Boxes (DP&DAG)
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
- UVa 103 Stacking Boxes
- UVa 103 - Stacking Boxes(dp求解)
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
- UVa 103 Stacking Boxes --- DAG上的动态规划
- 【DP】UVA 103 Stacking Boxes 输出路径
- UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
- uva 103 - Stacking Boxes 动态规划——最长路及字典序
- UVa Problem 103 - Stacking Boxes
- uva103-Stacking_Boxes(dp最长递增子序列)
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
- 【DP】UVA 103 Stacking Boxes 输出路径
- UVa 103 Stacking Boxes 解题源码