hfkai / SkuSelects

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

看了代码,有段不知道什么意思

jameschen4540 opened this issue · comments

/**
* 算法拆分组合 用1和0 的移位去做控制
* (这块需要你打印才能看的出来)
*
* @param len
* @param n
* @return
*/
private static ArrayList<Integer[]> getCombFlags(int len, int n) {
if (n <= 0) {
return new ArrayList<>();
}
ArrayList<Integer[]> aResult = new ArrayList<>();
Integer[] aFlag = new Integer[len];
boolean bNext = true;
int iCnt1 = 0;
//初始化
for (int i = 0; i < len; i++) {
aFlag[i] = i < n ? 1 : 0;
Log.e(TAG, "getCombFlags:初始化===aFlag["+i+"]== "+ aFlag[i]);
}

    aResult.add(aFlag.clone());
    while (bNext) {
        iCnt1 = 0;
        for (int i = 0; i < len - 1; i++) {
            if (aFlag[i] == 1 && aFlag[i + 1] == 0) {
                for (int j = 0; j < i; j++) {
                    aFlag[j] = j < iCnt1 ? 1 : 0;
                    Log.e(TAG, "getCombFlags:aFlag["+j+"]== "+ aFlag[j]);
                }
                aFlag[i] = 0;
                aFlag[i + 1] = 1;
                Integer[] aTmp = aFlag.clone();
                aResult.add(aTmp);
                if (!TextUtils.join("", aTmp).substring(len - n).contains("0")) {
                    bNext = false;
                }
                break;
            }
            if (aFlag[i] == 1) {
                iCnt1++;

            }
        }
    }
    Log.e(TAG, "getCombFlags:aResult=== "+aResult );
    return aResult;
}
commented

这段代码的意思是拆分sku的所有可能的组合,你可以试着一个一个打印出来看看