巧克力棒分割

1.题目(如图)

2.js实现

function cho(arr){
    
    //存分的两段的值
    var x = [];
    var y = [];
    var flag = false;
    
    //存个数
    var num = 0;
    //循环每一个值
    for(var i=0;i<arr.length;i++){
        x = [];
        y = [];
        flag = false;
        var arr1 = [].concat(arr);
        //这一步循环是指把一个数值分成两段的所有情况
        for(var j=1;j<arr[i]-j;j++){
            x.push(j);
            y.push(arr[i]-j);
        }
        arr1.splice(i,1);
        //根据其中一段去做判断
        //原数组不存在这两段,且这两段不相等,且除这两段外原数组没有重复项,则标记为true
        for(var z = 0;z<x.length;z++){
            if(arr.indexOf(x[z])<0&&arr.indexOf(y[z])<0&&x[z]!=y[z]){
                if(new Set(arr1).size==arr1.length){
                    flag = true;
                    break;
                }
            }     
        }
        if(flag){
            num+=1;
        }
    }
    return num;
}
console.log(cho([5,6,7,8]));
console.log(cho([5,5]));
console.log(cho([2,3,4]));
console.log(cho([2]));
console.log(cho([5,5,6,6]));
console.log(cho([6,7,10,10]));
console.log(cho([6,6,7,7]));
console.log(cho([6,6,6,7]));

 

posted @ 2021-07-08 11:22  你风致  阅读(30)  评论(0编辑  收藏  举报