tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
83
Task/Permutations/Java/permutations-1.java
Normal file
83
Task/Permutations/Java/permutations-1.java
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
public class PermutationGenerator {
|
||||
private int[] array;
|
||||
private int firstNum;
|
||||
private boolean firstReady = false;
|
||||
|
||||
public PermutationGenerator(int n, int firstNum_) {
|
||||
if (n < 1) {
|
||||
throw new IllegalArgumentException("The n must be min. 1");
|
||||
}
|
||||
firstNum = firstNum_;
|
||||
array = new int[n];
|
||||
reset();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
array[i] = i + firstNum;
|
||||
}
|
||||
firstReady = false;
|
||||
}
|
||||
|
||||
public boolean hasMore() {
|
||||
boolean end = firstReady;
|
||||
for (int i = 1; i < array.length; i++) {
|
||||
end = end && array[i] < array[i-1];
|
||||
}
|
||||
return !end;
|
||||
}
|
||||
|
||||
public int[] getNext() {
|
||||
|
||||
if (!firstReady) {
|
||||
firstReady = true;
|
||||
return array;
|
||||
}
|
||||
|
||||
int temp;
|
||||
int j = array.length - 2;
|
||||
int k = array.length - 1;
|
||||
|
||||
// Find largest index j with a[j] < a[j+1]
|
||||
|
||||
for (;array[j] > array[j+1]; j--);
|
||||
|
||||
// Find index k such that a[k] is smallest integer
|
||||
// greater than a[j] to the right of a[j]
|
||||
|
||||
for (;array[j] > array[k]; k--);
|
||||
|
||||
// Interchange a[j] and a[k]
|
||||
|
||||
temp = array[k];
|
||||
array[k] = array[j];
|
||||
array[j] = temp;
|
||||
|
||||
// Put tail end of permutation after jth position in increasing order
|
||||
|
||||
int r = array.length - 1;
|
||||
int s = j + 1;
|
||||
|
||||
while (r > s) {
|
||||
temp = array[s];
|
||||
array[s++] = array[r];
|
||||
array[r--] = temp;
|
||||
}
|
||||
|
||||
return array;
|
||||
} // getNext()
|
||||
|
||||
// For testing of the PermutationGenerator class
|
||||
public static void main(String[] args) {
|
||||
PermutationGenerator pg = new PermutationGenerator(3, 1);
|
||||
|
||||
while (pg.hasMore()) {
|
||||
int[] temp = pg.getNext();
|
||||
for (int i = 0; i < temp.length; i++) {
|
||||
System.out.print(temp[i] + " ");
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
} // class
|
||||
Loading…
Add table
Add a link
Reference in a new issue