⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmn.java

📁 用java实现了数学上的排列组合问题
💻 JAVA
字号:




import java.util.ArrayList;

/**
 * <p>
 * ���ַ���ȡ��ָ������������ַ�
 * <p>
 *
 * 
 * @author yjfeng
 */
public class Cmn {
	
	private String mString;
	private int n;
	
	
	public Cmn(String mString,int n){
		this.mString = mString;
		this.n = n;
	}
	
	private int getTheMax(){
		int lenth = mString.length();
		double maxvalue = 0;
		for(int i = 0;i < lenth; i ++ ){
			maxvalue = maxvalue + Math.pow(2, i);
		}
		return (int)maxvalue;
	}
	
	private int count1(String binaryStr){
		int count = 0;
		for(int i = 0;i < binaryStr.length();i ++){
			if(binaryStr.charAt(i) == '1'){
				count ++;
			}
		}
		return count;
	}

	
	private String[] getCmnIndexStr(){
		int maxvalue = getTheMax();		
		ArrayList list = new ArrayList();
		for(int j = 1;j <= maxvalue;j ++){
			String binaryStr = Integer.toBinaryString(j);
			if(count1(binaryStr) == n){
				list.add(appendZero(binaryStr));
			}			
		}
		return (String[])list.toArray(new String[0]);
	}
	
	private String appendZero(String str){
		int len = mString.length();
		if(str.length() < len){
			int sublen = len - str.length();
			String appendStr = "";
			for(int i = 0;i < sublen;i ++){
				appendStr = appendStr + "0";
			}
			str = appendStr + str;
			
		}
		return str;
	}

	
	private String getStrByIndexStr(String indexStr,String mstr){
		String result = "";
		for(int i = 0;i < indexStr.length();i ++){
			if(indexStr.charAt(i) == '1'){
				result = result + mstr.charAt(i);
			}
		}
		return result;
	}
	
	public String[] getCmnString(){
		if(n == 0){
			return new String[0];
		}else if(n == mString.length()){
			return new String[]{mString};
		}
		
		String[] indexStr = getCmnIndexStr();
		String[] cmnStr = new String[indexStr.length];
		for(int i = 0;i < indexStr.length;i ++){
			cmnStr[i] = getStrByIndexStr(indexStr[i],mString);
		}
		return cmnStr;
	}
	
	

	
	
	public static void main(String[] a){
		Cmn cmn = new Cmn("123456",3);
		String[] str = cmn.getCmnString();
		for(int i = 0;i < str.length;i ++){
			System.out.println(str[i]);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -