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

📄 combination.java

📁 一款少见的用swt写的彩票软件
💻 JAVA
字号:
package com.dc.common;

import java.util.Arrays;

public class Combination {

	private int[] index;// 用于存储需要组合的数组的下标的成员变量。

	private int length;// 表示待组合数组的长度。

	private int n;// 组合序列的元素个数

	private long numLeft;// 用于存储剩余组合序列个数的成员变量。

	private long total;// 用于存储组合序列总数的成员变量。

	public Combination(int length) {
		this(length, 0);
	}

	public Combination(int length, int n) {
		this.length = length;
		this.n = n;
		reset();
	}

	public void reset() {

		if (n > length) {
			System.out.println("需要组合的个数超出数组元素个数!");
			System.exit(1);
		}

		// 初始化numLeft,开始时numLeft应该为2^n.
		
		//System.out.print();
		total = numLeft = (int) Math.pow((double) 2, (double) length);
		System.out.println("total值为:"+total);
		System.out.println("numLeft值为:"+numLeft);
		// 初始化数组index。
		index = new int[length];
		Arrays.fill(index, 0);
		System.out.println("index数组值为");
		for(int i:index){
			System.out.print(" "+index[i]);
		}
		System.out.println();
	}

	private int sum() {
		int s = 0;
		for (int i : index) {
			s += i;
			
		}
		System.out.println("s值为:"+s);
		return s;
	}

	public boolean hasMore() {
		return numLeft > 0;
	}

	public int[] getNext() {

		index[0] += 1;
		for (int i = 0; i < index.length; i++) {
			if (index[i] == 2) {
				index[i] = 0;
				if (i != index.length - 1){
					index[i + 1] += 1;
					//System.out.println("i当前值为:"+i);
				}
					
			}
		}
		//System.out.println("numLeft当前为:"+numLeft);
		numLeft--;
		if (this.n != 0) {
			if (sum() == this.n)
				return index;
			else if (hasMore())
				return getNext();
		}
		System.out.println("返回当前的index值为:"+index);
		return index;
	}
}

⌨️ 快捷键说明

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