Advertisement
florence20

Untitled

Apr 14th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.io.PrintWriter;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.Collections;
  10. import java.util.Comparator;
  11. import java.util.LinkedList;
  12.  
  13. public class Numaratoare {
  14.  
  15. public static final String INPUT_FILE = "numaratoare.in";
  16. public static final String OUTPUT_FILE = "numaratoare.out";
  17. Integer[] numbers;
  18. int s, n, i;
  19. LinkedList<LinkedList<Integer>> res = new LinkedList<>();
  20.  
  21. public void readInput() {
  22. try {
  23. BufferedReader reader = new BufferedReader(new FileReader(INPUT_FILE));
  24. s = Integer.parseInt(reader.readLine());
  25. n = Integer.parseInt(reader.readLine());
  26. i = Integer.parseInt(reader.readLine());
  27. reader.close();
  28. } catch (IOException e) {
  29. throw new RuntimeException(e);
  30. }
  31. numbers = new Integer[s];
  32. for (int j = 0; j < s; j++) {
  33. numbers[j] = j + 1;
  34. }
  35. }
  36.  
  37. public void findNumbers(int sum, LinkedList<Integer> r, int i) {
  38. if (sum < 0) {
  39. return;
  40. }
  41. if (sum == 0 && n == r.size()) {//si contor = i => solved = 1 si if solved = 1
  42. LinkedList<Integer> aux = (LinkedList<Integer>) r.clone();
  43. Collections.reverse(aux);
  44. res.add(aux);
  45. return;
  46. }
  47. while (i < numbers.length && sum - numbers[i] >= 0) {
  48. r.add(numbers[i]);
  49. findNumbers(sum - numbers[i], r, i);
  50. i++;
  51. r.removeLast();
  52. }
  53. }
  54.  
  55. public void combinationSum(int sum) {
  56. LinkedList<Integer> r = new LinkedList<>();
  57. findNumbers(sum, r, 0);
  58. }
  59.  
  60. public void writeOutput() throws FileNotFoundException {
  61. System.out.println(s + " " + n + " " + i);
  62. System.out.println(res.size());
  63.  
  64. PrintWriter pw = new PrintWriter(new File(OUTPUT_FILE));
  65. if (i >= res.size()) {
  66. pw.printf("-");
  67. pw.close();
  68. } else {
  69. for (LinkedList<Integer> x : res) {
  70. System.out.println(x);
  71. }
  72. LinkedList<Integer> r = res.get(i);
  73. pw.printf("%d=%d", s, r.get(0));
  74. r.remove(0);
  75. r.forEach((element) -> {
  76. pw.printf("+%d", element);
  77. });
  78. pw.close();
  79. }
  80.  
  81. }
  82.  
  83. public void solve() throws FileNotFoundException {
  84. readInput();
  85. combinationSum(s);
  86. writeOutput();
  87. }
  88.  
  89. public static void main(String[] args) throws FileNotFoundException {
  90. new Numaratoare().solve();
  91. }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement