算法:排列组合之C(N,M)

来源:互联网 发布:invalid date js 编辑:程序博客网 时间:2024/05/17 06:49

算法主要结合二进制实现从n个数里面选择m个    不考虑效率问题,算法比较容易理解

 

package algorithm;public class ERjinzhiyupailiezuhe {/** * 用二进制判断排列组合 * 这个算法求的事n个里边求m * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] a = new int[] { 1, 2, 3, 4, 5 };int[] b = new int[] { 0, 0, 0, 0, 0 };// 如果选三个的话for (int i = 0; i < 32; i++) {int n = 0;if (i % 2 >= 1) {b[4] = 1;n++;} elseb[4] = 0;if (i % 4 >= 2) {b[3] = 1;n++;} elseb[3] = 0;if (i % 8 >= 4) {b[2] = 1;n++;} elseb[2] = 0;if (i % 16 >= 8) {b[1] = 1;n++;} elseb[1] = 0;if (i % 32 >= 16) {b[0] = 1;n++;} elseb[0] = 0;if (n == 3) {for (int j = 0; j < 5; j++) {if (b[j] == 1)Print.print(a[j]);b[j] = 0;}Print.println("");Print.println(i);}}}}


 

原创粉丝点击