Java基于遞歸解決全排列問題算法示例
本文實例講述了Java基于遞歸解決全排列問題算法。分享給大家供大家參考,具體如下:
排列問題
設(shè)R={r1,r2,...,rn}是要進行排列的n個元素,Ri=R-{ri}。集合x中元素的全排列記為Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一個排列前加上前綴ri得到的排列。R的全排列可歸納如下:
當(dāng)n=1時,Perm(R)=(r),其中r是集合中唯一的元素;
當(dāng)n>1時,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3)。。。。(rn)Perm(Rn)構(gòu)成。
public class AllSort {
public static void perm(int[] list, int k, int m) {
if( k == m) {
for (int i = 0; i <=m; i++) {
System.out.print(list[i]);
}
System.out.println();
}
else{
for(int i = k; i <= m; i++) {
swap(list,k,i);
perm(list, k+1 , m);
swap(list,k,i);
}
}
}
public static void swap(int[] list, int a, int b) {
int temp;
temp = list[a];
list[a] = list[b];
list[b] = temp;
}
public static void main(String args[]) {
int[] list = new int[5];
for(int i = 0; i < list.length; i++) {
list[i] = i+1;
}
perm(list,0,list.length-1);
}
}
運行結(jié)果:
12345 12354 12435 12453 12543 12534 13245 13254 13425 13452 13542 13524 14325 14352 14235 14253 14523 14532 15342 15324 15432 15423 15243 15234 21345 21354 21435 21453 21543 21534 23145 23154 23415 23451 23541 23514 24315 24351 24135 24153 24513 24531 25341 25314 25431 25413 25143 25134 32145 32154 32415 32451 32541 32514 31245 31254 31425 31452 31542 31524 34125 34152 34215 34251 34521 34512 35142 35124 35412 35421 35241 35214 42315 42351 42135 42153 42513 42531 43215 43251 43125 43152 43512 43521 41325 41352 41235 41253 41523 41532 45312 45321 45132 45123 45213 45231 52341 52314 52431 52413 52143 52134 53241 53214 53421 53412 53142 53124 54321 54312 54231 54213 54123 54132 51342 51324 51432 51423 51243 51234
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
IDEA2020.2.3 "reading maven projects"卡住的問題
這篇文章主要介紹了IDEA2020.2.3 "reading maven projects"卡住的問題及問題原因探究,通過多種方法給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-10-10
Java中Dijkstra算法求解最短路徑的實現(xiàn)
Dijkstra算法是一種解決最短路徑問題的常用算法,本文主要介紹了Java中Dijkstra算法求解最短路徑的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-09-09
Mybatis中關(guān)于自定義mapper.xml時,參數(shù)傳遞的方式及寫法
這篇文章主要介紹了Mybatis中關(guān)于自定義mapper.xml時,參數(shù)傳遞的方式及寫法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼
本篇文章主要介紹了Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07

