Advertisement
florence20

Untitled

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