問題:3個A、3個B、3個C,輸出滿足條件:相鄰的字母不能重複這樣的序列

/**
 問題:3個A、3個B、3個C,輸出滿足條件:相鄰的字母不能重複這樣的序列
 */
let c = [];

function IsBetweenEqual(c) {
    for (let i = 0; i < 8; i++) {
        if (c[i] == c[i + 1]) {
            return false;
        }
    }
    return true;
}

function isThree(c) {
    let count = [];
    for (let i = 0; i < 9; i++) {
        let num = c[i];
        if (!count[num]) {
            count[num] = 0;
        }
        count[num]++;
    }

    for (let i = 0; i < count.length; i++) {
        if (count[i] != 3) {
            return false;
        }
    }

    return true;
}

function dfs(start, answer_list) {
    if (start == 9) {
        if (IsBetweenEqual(c) && isThree(c)) {
            answer_list.push(c.slice(0));
        }
        return;
    }

    for (let i = 0; i < 3; i++) {
        c[start] = i;
        dfs(start + 1, answer_list);
        c[start] = undefined;
    }
}

let answer_list = [];
dfs(0, answer_list);
console.log(answer_list);

/**
 [ [ 0, 1, 0, 1, 2, 0, 2, 1, 2 ],
 [ 0, 1, 0, 1, 2, 1, 2, 0, 2 ],
 [ 0, 1, 0, 2, 0, 1, 2, 1, 2 ],
 [ 0, 1, 0, 2, 0, 2, 1, 2, 1 ],
 [ 0, 1, 0, 2, 1, 0, 2, 1, 2 ],
 [ 0, 1, 0, 2, 1, 2, 0, 1, 2 ],
 [ 0, 1, 0, 2, 1, 2, 0, 2, 1 ],
 [ 0, 1, 0, 2, 1, 2, 1, 0, 2 ],
 [ 0, 1, 0, 2, 1, 2, 1, 2, 0 ],
 [ 0, 1, 2, 0, 1, 0, 2, 1, 2 ],
 [ 0, 1, 2, 0, 1, 2, 0, 1, 2 ],
 [ 0, 1, 2, 0, 1, 2, 0, 2, 1 ],
 [ 0, 1, 2, 0, 1, 2, 1, 0, 2 ],
 [ 0, 1, 2, 0, 1, 2, 1, 2, 0 ],
 [ 0, 1, 2, 0, 2, 0, 1, 2, 1 ],
 [ 0, 1, 2, 0, 2, 1, 0, 1, 2 ],
 [ 0, 1, 2, 0, 2, 1, 0, 2, 1 ],
 [ 0, 1, 2, 0, 2, 1, 2, 0, 1 ],
 [ 0, 1, 2, 0, 2, 1, 2, 1, 0 ],
 [ 0, 1, 2, 1, 0, 1, 2, 0, 2 ],
 [ 0, 1, 2, 1, 0, 2, 0, 1, 2 ],
 [ 0, 1, 2, 1, 0, 2, 0, 2, 1 ],
 [ 0, 1, 2, 1, 0, 2, 1, 0, 2 ],
 [ 0, 1, 2, 1, 0, 2, 1, 2, 0 ],
 [ 0, 1, 2, 1, 2, 0, 1, 0, 2 ],
 [ 0, 1, 2, 1, 2, 0, 1, 2, 0 ],
 [ 0, 1, 2, 1, 2, 0, 2, 0, 1 ],
 [ 0, 1, 2, 1, 2, 0, 2, 1, 0 ],
 [ 0, 1, 2, 1, 2, 1, 0, 2, 0 ],
 [ 0, 2, 0, 1, 0, 1, 2, 1, 2 ],
 [ 0, 2, 0, 1, 0, 2, 1, 2, 1 ],
 [ 0, 2, 0, 1, 2, 0, 1, 2, 1 ],
 [ 0, 2, 0, 1, 2, 1, 0, 1, 2 ],
 [ 0, 2, 0, 1, 2, 1, 0, 2, 1 ],
 [ 0, 2, 0, 1, 2, 1, 2, 0, 1 ],
 [ 0, 2, 0, 1, 2, 1, 2, 1, 0 ],
 [ 0, 2, 0, 2, 1, 0, 1, 2, 1 ],
 [ 0, 2, 0, 2, 1, 2, 1, 0, 1 ],
 [ 0, 2, 1, 0, 1, 0, 2, 1, 2 ],
 [ 0, 2, 1, 0, 1, 2, 0, 1, 2 ],
 [ 0, 2, 1, 0, 1, 2, 0, 2, 1 ],
 [ 0, 2, 1, 0, 1, 2, 1, 0, 2 ],
 [ 0, 2, 1, 0, 1, 2, 1, 2, 0 ],
 [ 0, 2, 1, 0, 2, 0, 1, 2, 1 ],
 [ 0, 2, 1, 0, 2, 1, 0, 1, 2 ],
 [ 0, 2, 1, 0, 2, 1, 0, 2, 1 ],
 [ 0, 2, 1, 0, 2, 1, 2, 0, 1 ],
 [ 0, 2, 1, 0, 2, 1, 2, 1, 0 ],
 [ 0, 2, 1, 2, 0, 1, 0, 1, 2 ],
 [ 0, 2, 1, 2, 0, 1, 0, 2, 1 ],
 [ 0, 2, 1, 2, 0, 1, 2, 0, 1 ],
 [ 0, 2, 1, 2, 0, 1, 2, 1, 0 ],
 [ 0, 2, 1, 2, 0, 2, 1, 0, 1 ],
 [ 0, 2, 1, 2, 1, 0, 1, 0, 2 ],
 [ 0, 2, 1, 2, 1, 0, 1, 2, 0 ],
 [ 0, 2, 1, 2, 1, 0, 2, 0, 1 ],
 [ 0, 2, 1, 2, 1, 0, 2, 1, 0 ],
 [ 0, 2, 1, 2, 1, 2, 0, 1, 0 ],
 [ 1, 0, 1, 0, 2, 0, 2, 1, 2 ],
 [ 1, 0, 1, 0, 2, 1, 2, 0, 2 ],
 [ 1, 0, 1, 2, 0, 1, 2, 0, 2 ],
 [ 1, 0, 1, 2, 0, 2, 0, 1, 2 ],
 [ 1, 0, 1, 2, 0, 2, 0, 2, 1 ],
 [ 1, 0, 1, 2, 0, 2, 1, 0, 2 ],
 [ 1, 0, 1, 2, 0, 2, 1, 2, 0 ],
 [ 1, 0, 1, 2, 1, 0, 2, 0, 2 ],
 [ 1, 0, 1, 2, 1, 2, 0, 2, 0 ],
 [ 1, 0, 2, 0, 1, 0, 2, 1, 2 ],
 [ 1, 0, 2, 0, 1, 2, 0, 1, 2 ],
 [ 1, 0, 2, 0, 1, 2, 0, 2, 1 ],
 [ 1, 0, 2, 0, 1, 2, 1, 0, 2 ],
 [ 1, 0, 2, 0, 1, 2, 1, 2, 0 ],
 [ 1, 0, 2, 0, 2, 0, 1, 2, 1 ],
 [ 1, 0, 2, 0, 2, 1, 0, 1, 2 ],
 [ 1, 0, 2, 0, 2, 1, 0, 2, 1 ],
 [ 1, 0, 2, 0, 2, 1, 2, 0, 1 ],
 [ 1, 0, 2, 0, 2, 1, 2, 1, 0 ],
 [ 1, 0, 2, 1, 0, 1, 2, 0, 2 ],
 [ 1, 0, 2, 1, 0, 2, 0, 1, 2 ],
 [ 1, 0, 2, 1, 0, 2, 0, 2, 1 ],
 [ 1, 0, 2, 1, 0, 2, 1, 0, 2 ],
 [ 1, 0, 2, 1, 0, 2, 1, 2, 0 ],
 [ 1, 0, 2, 1, 2, 0, 1, 0, 2 ],
 [ 1, 0, 2, 1, 2, 0, 1, 2, 0 ],
 [ 1, 0, 2, 1, 2, 0, 2, 0, 1 ],
 [ 1, 0, 2, 1, 2, 0, 2, 1, 0 ],
 [ 1, 0, 2, 1, 2, 1, 0, 2, 0 ],
 [ 1, 2, 0, 1, 0, 1, 2, 0, 2 ],
 [ 1, 2, 0, 1, 0, 2, 0, 1, 2 ],
 [ 1, 2, 0, 1, 0, 2, 0, 2, 1 ],
 [ 1, 2, 0, 1, 0, 2, 1, 0, 2 ],
 [ 1, 2, 0, 1, 0, 2, 1, 2, 0 ],
 [ 1, 2, 0, 1, 2, 0, 1, 0, 2 ],
 [ 1, 2, 0, 1, 2, 0, 1, 2, 0 ],
 [ 1, 2, 0, 1, 2, 0, 2, 0, 1 ],
 [ 1, 2, 0, 1, 2, 0, 2, 1, 0 ],
 [ 1, 2, 0, 1, 2, 1, 0, 2, 0 ],
 [ 1, 2, 0, 2, 0, 1, 0, 1, 2 ],
 [ 1, 2, 0, 2, 0, 1, 0, 2, 1 ],
 [ 1, 2, 0, 2, 0, 1, 2, 0, 1 ],
 ... 74 more items ]
 */

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章