1:演算法主要結合二進位制實現從n個數裡面選擇m個 (其實就是判斷乙個整數對應的二進位制各位的值)
2:不考慮效率問題的話演算法比較容易理解
**如下:
package algorithm;
public class erjinzhiyupailiezuhe ;
//a為原陣列
int b = new int ;
//b位換算成二進位制後各位的值
// 本程式為5選3的例項,大家可根據需要相應修改
for (int i = 0; i < 32; i++) else
b[4] = 0;
if (i % 4 >= 2) else
b[3] = 0;
if (i % 8 >= 4) else
b[2] = 0;
if (i % 16 >= 8) else
b[1] = 0;
if (i % 32 >= 16) else
b[0] = 0;
if (n == 3)
//按位輸出
system.out.print(" "+i);
system.out.println();
}} }
}
輸出結果如下:
345 7
245 11
235 13
234 14
145 19
135 21
134 22
125 25
124 26
123 28
排列組合 C n,m
一 求解c n,m 公式一 公式二 公式二可以這麼理解,從n個物品中取m個有2種情況 1 不取第n個物品,於是從前n 1個中取m個 2 取第n個物品,於是從前n 1個中取m 1 所以答案是這兩種情況的和 二 求解c n,m p,p為大質數 當n,m,p都很大的時候,用公式二肯定不行了,費時間又費記憶...
演算法 排列組合
a m,n n n m 從 n 個數中取 m 個有前後順序的數列 有 a m,n 種方式 c m,n n n m m a m,n m 從 n 個數中取 m 個無前後順序的數列 有 c m,n 種方式 性質 c m,n c n m,n c r,n 1 c r 1,n c r,n 楊輝三角性質 c 0,...
排列組合演算法實現
全排列表示把集合中元素的所有按照一定的順序排列起來,使用p n,n n 表示n個元素全排列的個數。例如 的全排列為 123 132 213 231 312 321 共6個,即3!321 6。這個是怎麼算出來的呢?首先取乙個元素,例如取出了1,那麼就還剩下。然後再從剩下的集合中取出乙個元素,例如取出2...