📄 counters.java
字号:
package iitb.Utils;import java.util.*;public class Counters { int cnts[] = null; int maxVals[] = null; BitSet fixedVals; public Counters(int numCtrs, int maxVal) { this(numCtrs, new int[numCtrs]); for (int i = 0; i < maxVals.length; maxVals[i++] = maxVal); } public Counters(int numCtrs, int maxVals[]) { cnts = new int[numCtrs]; fixedVals = new BitSet(numCtrs+1); this.maxVals = maxVals; } public void fix(int index, int val) {cnts[index ] =val; fixedVals.set(index);} public void clear() { for (int i = 0; i < cnts.length; cnts[i++] = 0); fixedVals.clear(); } public void init(int maxVal[]) { clear(); for (int i = 0; i < maxVals.length; maxVals[i] = maxVal[i],i++) { if (maxVal[i]==0) cnts[cnts.length-1]=maxVal[cnts.length-1]; } } public void init(int maxVal) { clear(); for (int i = 0; i < maxVals.length; maxVals[i] = maxVal,i++); } int nextNonFixed(int i) {return fixedVals.nextClearBit(i);} public boolean isFixed(int index) {return fixedVals.get(index);} public boolean advance() { for (int i = 0; (i < cnts.length); i++) { i = nextNonFixed(i); if (i < cnts.length) { cnts[i]++; if (cnts[i] < maxVals[i]) return true; else if (i < cnts.length-1) cnts[i] = 0; } } return false; } public boolean done() {return (cnts[cnts.length-1] >= maxVals[cnts.length-1]);} public int get(int index) {return cnts[index];} public int value(int endIndex, int startIndex) { int val = 0; for (int i = endIndex; i >= startIndex; i--) { val = (val*maxVals[i] + cnts[i]); } return val; } public int value() {return value(cnts.length-1,0);} public void arrayCopy(int endIndex, int startIndex, int arr[]) { for (int i = endIndex; i >= startIndex; i--) { arr[i-startIndex] = cnts[i]; } }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -