产生组合数,位运算
来源:互联网 发布:mac鼠标滚轮没反应 编辑:程序博客网 时间:2024/06/04 18:14
* 功能:产生组合数,如从8里面选4个,输出形如11110000到00010111的结果
* 算法:二进制移位,与或非等
(以前写了个10选5的组合数,用解析字符串的方式来算,程序运行了几个小时才搞定,太低效了)
</pre><pre name="code" class="java">public class GenerateConbinedNumber {/** * @param args * 功能:产生组合数,如从8里面选4个,输出形如11110000到00010111的结果 * 算法:二进制移位,与或非等 */public int nuberOf1(int number){int count = 0; int flag = 1; int b;/*//标签左移计算1的个数 * while(flag>0){b = number&flag;if(!(b==0))count++;flag = flag<<1;//System.out.println(b);}*/ //数右移位,计算1的个数while(number>0){b = number&flag;if(!(b==0))count++;number = number>>1;//flag = flag<<1;//System.out.println(b);}return count;}public int nuberOf0(int number){int count = 0; int flag = 1; int b;while(number>0){b = number&flag;if(b==0)count++;number = number>>1;}return count;}public void choose14From28(int a,int b){int aa = (int)Math.pow(2, a) - 1;int bb = (int)Math.pow(2, b) - 1;while(bb>aa){if(this.nuberOf1(bb) == a){System.out.println(this.write0(this.nuberOf1(bb), this.nuberOf0(bb), b) + Integer.toBinaryString(bb));}bb--;}}public String write0(int n1,int n0, int n){String s = "";for(int i=0; i<n-n1-n0; i++){s += "0";}return s;}public static void main(String[] args) {// TODO Auto-generated method stubGenerateConbinedNumber g = new GenerateConbinedNumber();g.choose14From28(4,8);}}
0 0
- 产生组合数,位运算
- 组合数奇偶性判断 应用位运算方法
- 用位运算快速求解全部组合数
- 位运算求组合
- 位运算数的运算
- 位运算求组合,poj2453
- UVA11806容斥原理,位运算排列,递推组合数
- 【哈工大oj】1037 - 组合数末尾的零(位运算,好题)
- 位运算求子集数
- 位运算与组合搜索(一)
- 字符串组合——位运算
- poj 2436 位运算+组合枚举
- hdoj4810Wall Painting【组合数学+位运算】
- hdu4810 wall painting 组合数学+位运算
- 随机产生任意位的字母数字组合
- 彩票复式投注程序(组合数产生方法)
- 只使用位运算,交换两个数
- 只用位运算交换两个数
- 1384
- 新浪微博开发之三十二(原创微博和转发微博frame)
- acitvator 将play工程导入eclipse
- Fiddler教程
- 东大OJ-1544: GG的战争法则
- 产生组合数,位运算
- sss
- iOS 倒计时 方法
- 新浪微博开支三十三(原创和转发微博view)
- vim的简明教程
- Java同步技术 (一)
- android开发之布局
- Android 之 下拉框(Spinner)的简单使用
- java语言实现创建型设计模式—工厂方法模式