C 排列組合類,寫彩票演算法的朋友們可以來看一看

2022-08-01 11:39:08 字數 1981 閱讀 9027

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...