利用递归实现排列让我哥恍然大悟

来源:互联网 发布:软件项目建设原则 编辑:程序博客网 时间:2024/05/16 08:06

在全排里的基础上加条件。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);

结果:

124356124365124536124563124653124635125436125463125643126453126435126543143256143265143526143562143652143625142356142365142536142563142653142635145236145263145326145362145632145623146253146235146523146532146352146325154326154362154236154263154623154632152436152463152643156423156432156243164352164325164532164523164253164235165432165423165243162453162435162543214356214365214536214563214653214635215436215463215643216453216435216543243156243165243516243561243651243615241356241365241536241563241653241635245136245163245316245361245631245613246153246135246513246531246351246315254316254361254136254163254613254631251436251463251643256413256431256143264351264315264531264513264153264135265431265413265143261453261435261543423156423165423516423561423651423615421356421365421536421563421653421635425136425163425316425361425631425613426153426135426513426531426351426315432156432165432516432561432651432615431256431265431526431562431652431625435126435162435216435261435621435612436152436125436512436521436251436215413256413265413526413562413652413625412356412365412536412563412653412635415236415263415326415362415632415623416253416235416523416532416352416325453126453162453216453261453621453612451326451362451236451263451623451632452136452163452316452361452631452613456123456132456213456231456321456312463152463125463512463521463251463215461352461325461532461523461253461235465132465123465312465321465231465213462153462135462513462531462351462315524316524361524136524163524613524631521436521463521643526413526431526143543216543261543126543162543612543621542316542361542136542163542613542631541236541263541326541362541632541623546213546231546123546132546312546321514326514362514236514263514623514632512436512463512643516423516432516243564312564321564132564123564213564231561432561423561243562413562431562143624351624315624531624513624153624135625431625413625143621453621435621543643251643215643521643512643152643125642351642315642531642513642153642135645231645213645321645312645132645123641253641235641523641532641352641325654321654312654231654213654123654132652431652413652143651423651432651243614352614325614532614523614253614235615432615423615243612453612435612543




原创粉丝点击