public class permutationandcombination
///
/// 遞迴演算法求陣列的組合(私有成員)
///
/// 返回的范型
/// 所求陣列
/// 輔助變數
/// 輔助變數
/// 輔助陣列
/// 輔助變數m
private static void getcombination(ref listlist, t t, int n, int m, int b, int m)
else
t temp = new t[m];
for (int j = 0; j < b.length; j++)
list.add(temp);}}
}///
/// 遞迴演算法求排列(私有成員)
///
/// 返回的列表
/// 所求陣列
/// 起始標號
/// 結束標號
private static void getpermutation(ref listlist, t t, int startindex, int endindex)
t temp = new t[t.length];
t.copyto(temp, 0);
list.add(temp);
}else}}
///
/// 求從起始標號到結束標號的排列,其餘元素不變
///
/// 所求陣列
/// 起始標號
/// 結束標號
/// 從起始標號到結束標號排列的范型
public static listgetpermutation(t t, int startindex, int endindex)
listlist = new list();
getpermutation(ref list, t, startindex, endindex);
return list;
}///
/// 返回陣列所有元素的全排列
///
/// 所求陣列
/// 全排列的范型
public static listgetpermutation(t t)
///
/// 求陣列中n個元素的排列
///
/// 所求陣列
/// 元素個數
/// 陣列中n個元素的排列
public static listgetpermutation(t t, int n)
listlist = new list();
listc = getcombination(t, n);
for (int i = 0; i < c.count; i++)
return list;
}///
/// 求陣列中n個元素的組合
///
/// 所求陣列
/// 元素個數
/// 陣列中n個元素的組合的范型
public static listgetcombination(t t, int n)
int temp = new int[n];
listlist = new list();
getcombination(ref list, t, t.length, n, temp, n);
return list;}}
呼叫:for (int i = 0; i < arr.length; i++)
//求排列
listlst_permutation = algorithms.permutationandcombination.getpermutation(arr, 3);//包含重複的
//求組合
listlst_combination = algorithms.permutationandcombination.getcombination(arr, 3);//不包含重複的
C語言 實現數學排列組合裡的排列演算法
1.1 函式的原型 函式的原型 int permutation int iarr,int size 將陣列的首位址和陣列的大小傳遞進去,函式將返回乙個二維陣列的位址,這個二維陣列包含n 個一維陣列 n即是size 而每乙個一維陣列又包含size個元素,二維陣列的大小為n n 1.2 遞迴的大概思路 ...
C語言實現的排列組合問題的通用演算法 解決方法
儘管排列組合是生活中經常遇到的問題,可在程式設計時,不深入思考或者經驗不足都讓人無從下手。由於排列組合問題總是先取組合再排列,並且單純的排列問題相對簡單,所以本文僅對組合問題的實現進行詳細討論。以在n個數中選取m 0 1.首先從n個數中選取編號最大的數,然後在剩下的n 1個數裡面選取m 1個數,直到...
c語言中一種典型的排列組合演算法
c語言中的全排列演算法和組合數演算法在實際問題中應用非常之廣,但演算法有許許多多,而我 個人認為 方法不必記太多,最好只記熟一種即可,一招鮮亦可吃遍天 全排列 include void swap int p1,int p2 int t p1 p1 p2 p2 t void permutation i...