在全排里的基础上加条件。4在3的前面。
方法体:
/**
* @category 排列,递归算法
* @see 条件4在3的前面
* @param array
* @param k
* @param m
*/
public void permutation(int array[], int k, int m) {
boolean flag = true;
String s = "";
if (k == m) {
for (int i = 0; i <= m; i++) {
if (array[i] == 3) {
for (int j = i; j <= m; j++) {
if (array[j] == 4)
flag = false;
}
}
s += array[i];
}
if (flag) {
System.out.print(s);
System.out.println();
}
} else {
for (int j = k; j <= m; j++) {
swapIndex(j, k, array);
permutation(array, k + 1, m);
swapIndex(j, k, array);
}
}
}
交换函数:
private void swapIndex(int a, int b, int[] array) {
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
调用:
sort.permutation(arr, 0, arr.length - 1);
结果:
124356
124365
124536
124563
124653
124635
125436
125463
125643
126453
126435
126543
143256
143265
143526
143562
143652
143625
142356
142365
142536
142563
142653
142635
145236
145263
145326
145362
145632
145623
146253
146235
146523
146532
146352
146325
154326
154362
154236
154263
154623
154632
152436
152463
152643
156423
156432
156243
164352
164325
164532
164523
164253
164235
165432
165423
165243
162453
162435
162543
214356
214365
214536
214563
214653
214635
215436
215463
215643
216453
216435
216543
243156
243165
243516
243561
243651
243615
241356
241365
241536
241563
241653
241635
245136
245163
245316
245361
245631
245613
246153
246135
246513
246531
246351
246315
254316
254361
254136
254163
254613
254631
251436
251463
251643
256413
256431
256143
264351
264315
264531
264513
264153
264135
265431
265413
265143
261453
261435
261543
423156
423165
423516
423561
423651
423615
421356
421365
421536
421563
421653
421635
425136
425163
425316
425361
425631
425613
426153
426135
426513
426531
426351
426315
432156
432165
432516
432561
432651
432615
431256
431265
431526
431562
431652
431625
435126
435162
435216
435261
435621
435612
436152
436125
436512
436521
436251
436215
413256
413265
413526
413562
413652
413625
412356
412365
412536
412563
412653
412635
415236
415263
415326
415362
415632
415623
416253
416235
416523
416532
416352
416325
453126
453162
453216
453261
453621
453612
451326
451362
451236
451263
451623
451632
452136
452163
452316
452361
452631
452613
456123
456132
456213
456231
456321
456312
463152
463125
463512
463521
463251
463215
461352
461325
461532
461523
461253
461235
465132
465123
465312
465321
465231
465213
462153
462135
462513
462531
462351
462315
524316
524361
524136
524163
524613
524631
521436
521463
521643
526413
526431
526143
543216
543261
543126
543162
543612
543621
542316
542361
542136
542163
542613
542631
541236
541263
541326
541362
541632
541623
546213
546231
546123
546132
546312
546321
514326
514362
514236
514263
514623
514632
512436
512463
512643
516423
516432
516243
564312
564321
564132
564123
564213
564231
561432
561423
561243
562413
562431
562143
624351
624315
624531
624513
624153
624135
625431
625413
625143
621453
621435
621543
643251
643215
643521
643512
643152
643125
642351
642315
642531
642513
642153
642135
645231
645213
645321
645312
645132
645123
641253
641235
641523
641532
641352
641325
654321
654312
654231
654213
654123
654132
652431
652413
652143
651423
651432
651243
614352
614325
614532
614523
614253
614235
615432
615423
615243
612453
612435
612543