Permutation.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package pathgame.algorithm;
  2. public class Permutation {
  3. private final int size;
  4. private int[] vals;
  5. private int[] minVals;
  6. private int minCost = Integer.MAX_VALUE;
  7. private final int thingsPerPos;
  8. public Permutation(int listSize, int thingsPerPos) {
  9. this.thingsPerPos = thingsPerPos;
  10. this.size = (listSize / thingsPerPos) - 1;
  11. vals = new int[size];
  12. }
  13. public int getValAtPos(int pos) {
  14. return vals[pos];
  15. }
  16. public boolean isPosAtMax(int pos) {
  17. if(vals[pos] == getMaxOfPos(pos)) {
  18. return true;
  19. }
  20. return false;
  21. }
  22. public int getMaxOfPos(int pos) {
  23. return thingsPerPos * (size - pos);
  24. }
  25. public int size() {
  26. return size;
  27. }
  28. public void increaseAtPos(int pos) {
  29. vals[pos]++;
  30. for(int i = pos + 1; i < size; i++) {
  31. vals[i] = 0;
  32. }
  33. }
  34. public int getMinCost() {
  35. return minCost;
  36. }
  37. public void setMinCost(int minCost) {
  38. this.minCost = minCost;
  39. minVals = vals.clone();
  40. }
  41. public void makePermutMinimal() {
  42. vals = minVals.clone();
  43. }
  44. public void printPermut() {
  45. for(int i = 0; i < size; i++) {
  46. System.out.print(vals[i] + " ");
  47. }
  48. System.out.println();
  49. }
  50. public void printMinPermut() {
  51. for(int i = 0; i < size; i++) {
  52. System.out.print(minVals[i] + " ");
  53. }
  54. System.out.println();
  55. }
  56. }