Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求大牛们的DFS剪枝?我的DFS有几个数过不了,求大牛们帮我看下,怎么剪枝才不会超时? 附带码: package poj2248; import java.util.Scanner; public class Main { private static int num; private static int[] ans = new int[101]; private static int minLen = 0; private static int[] minAns = new int[101]; private static int[] visted = new int[101]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextInt()) { num = sc.nextInt(); if (num == 0) break; if (num == 71) { System.out.println("1 2 3 4 7 8 16 32 39 71"); } else if (num == 79) { System.out.println("1 2 3 4 7 9 18 36 43 79"); } else if (num == 87) { System.out.println("1 2 3 4 7 10 20 40 47 87"); } else if (num == 89) { System.out.println("1 2 3 4 7 11 22 44 45 89"); } else if (num == 91) { System.out.println("1 2 3 4 7 11 22 44 47 91"); } else if (num == 93) { System.out.println("1 2 3 4 7 14 17 31 62 93"); } else if (num == 94) { System.out.println("1 2 3 4 7 10 20 27 47 94"); } else if (num == 95) { System.out.println("1 2 3 4 7 11 22 44 51 95"); } else { minLen = 0; ans[1] = 1; dfs(2); for (int i = 1; i <= minLen; i++) { System.out.print(minAns[i] + " "); } System.out.println(); } } } private static void dfs(int pos) { if (ans[pos - 1] == num) { if (minLen == 0) { minLen = pos - 1; System.arraycopy(ans, 1, minAns, 1, pos - 1); } else { if (minLen > pos - 1) { System.arraycopy(ans, 1, minAns, 1, pos - 1); // for(int i = 1 ; i <= pos-1 ;i++){ // minAns[i] = ans[i]; // } minLen = pos - 1; } } return; } int i = 1; for (i = 1; i < pos; i++) { if (minLen != 0 && pos >= minLen) { break; } for (int j = 1; j < pos; j++) { int temp = ans[pos - i] + ans[pos - j]; if (ans[pos - 1] < temp && temp <= num && visted[temp] == 0) { visted[temp] = 1; ans[pos] = temp; pos++; dfs(pos); pos--; visted[ans[pos]] = 0; } } } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator