fork download
  1. import java.util.Arrays;
  2. import java.util.Stack;
  3.  
  4. //mevius.5ch.net/test/read.cgi/tech/1480579110/883
  5. class Q9_883
  6. {
  7. public static void main(String[] args)
  8. {
  9. solve(22);
  10. }
  11.  
  12. static void solve(int n)
  13. {
  14. solve(n, n, 0, 1, new Stack<Integer>());
  15. }
  16.  
  17. private static void solve(int remain, int i, int numerator, int denominator, Stack<Integer> temp)
  18. {
  19. if (remain == 0)
  20. {
  21. if (numerator == denominator) System.out.println(toString(temp));
  22. return;
  23. }
  24.  
  25. while (i >= 1)
  26. {
  27. int n = numerator * i + denominator;
  28. int d = denominator * i;
  29. if (n > d) break;
  30.  
  31. temp.push(i);
  32. solve(remain - i, Math.min(remain - i, i), n, d, temp);
  33. temp.pop();
  34. i--;
  35. }
  36. }
  37.  
  38. public static String toString(Stack<Integer> stack)
  39. {
  40. Integer[] is = stack.toArray(new Integer[0]);
  41. Arrays.sort(is);
  42. return Arrays.toString(is);
  43. }
  44. }
  45.  
Success #stdin #stdout 0.1s 28108KB
stdin
Standard input is empty
stdout
[3, 3, 4, 12]
[2, 5, 5, 10]
[2, 4, 8, 8]