在全排里的基礎上加條件。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
作者:chengchanglun 發表于2012-4-14 13:56:49 原文鏈接
閱讀:142 評論:1 查看評論