Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Arrays;
- public class ValidPermutations {
- private int _k;
- private int[] _list;
- public ValidPermutations(int k, int[] list)
- {
- this._k = k;
- this._list = list;
- }
- private ArrayList<int[]> _allPermutationsRecurs(int[] prevList)
- {
- ArrayList<int[]> permutations = new ArrayList<int[]>();
- permutations.add(prevList);
- for (int i = 0; i < prevList.length; i++)
- {
- int[] currPermutation = new int[prevList.length - 1];
- for (int j = 0; j < prevList.length - 1; j++)
- {
- if (j >= i)
- currPermutation[j] = prevList[j + 1];
- else if (j < i)
- currPermutation[j] = prevList[j];
- }
- if (currPermutation.length != 0)
- {
- ArrayList<int[]> nextPermutations = this._allPermutations(currPermutation);
- for (int j = 0; j < nextPermutations.size(); j++)
- permutations.add(nextPermutations.get(j));
- }
- }
- return permutations;
- }
- private ArrayList<int[]> _allPermutations(int[] list)
- {
- ArrayList<int[]> permutations = this._allPermutationsRecurs(list);
- for (int i = permutations.size() - 1; i >= 0; i--)
- {
- for (int j = i - 1; j >= 0; j--)
- {
- if (Arrays.equals(permutations.get(i), permutations.get(j)))
- {
- permutations.remove(i);
- break;
- }
- }
- }
- return permutations;
- }
- public ArrayList<int[]> PermutationsWithSumsLargerThanOrEqualToK()
- {
- ArrayList<int[]> allPermutations = this._allPermutations(this._list);
- for (int i = allPermutations.size() - 1; i >= 0; i--)
- {
- int sum = 0;
- for (int j = 0; j < allPermutations.get(i).length; j++)
- sum += allPermutations.get(i)[j];
- if (sum < this._k) allPermutations.remove(i);
- }
- return allPermutations;
- }
- public static void main(String[] args)
- {
- ValidPermutations perms = new ValidPermutations(12, new int[] {5, 7, 9});
- ArrayList<int[]> validPerms = perms.PermutationsWithSumsLargerThanOrEqualToK();
- for (int i = 0; i < validPerms.size(); i++)
- {
- System.out.print("[");
- for (int j = 0; j < validPerms.get(i).length; j++)
- System.out.print(" " + validPerms.get(i)[j]);
- System.out.print(" ]\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement