Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Last active August 29, 2015 14:01
Show Gist options
  • Save jikeytang/e6d1d1417b2ec570a204 to your computer and use it in GitHub Desktop.
Save jikeytang/e6d1d1417b2ec570a204 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140521-题目3
求0—7所能组成的奇数个数,不允许重复。
比如:1,3,5组成的奇数个数为:
1,13,31,15,51,35,53,135,531,513.
共10个
回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
@wzc602003869
Copy link

//奇数额 个位是奇数就好了是么
var aaa=0;
            for(var i=0;i<=7;i++){
                for(var j=1;j<=7;j++){
                    if(i!=j){
                        if(j%2){
                            aaa++;
                        }
                    }
                 }
             }
            alert(aaa);

@nanjixiong218
Copy link

function caculate(){
    var i,sum=0,tempSum=0;
    for(i=2;i<8;i++){
        tempSum = Anm(i,i)-Anm(i-1,i-1)*2-(Anm(i-1,i-1)-Anm(i-2,i-2))*3;
        //i代表位数,tempSum为对应位数可以组成多少数字,
        // 用总的组合数减去以0打头和以0结尾的,在减去2,4,6结尾的组合数
        sum += tempSum;
    }
    sum+=4;
    return sum;
}
function Anm (n,m){
    try{//内部trycatch
        if(n<0||m<0||n<m){
            // throw new Error("数字不符合规则!");
            throw {
                name:"invalidNum",
                message:"数字不符合规则!"
            }
        }
    }catch(e){
        console.log(e.name+":"+e.message);
        return;
    }


    return function c(n){
        if(m==0||--m==0){
            return n;
        }
        return n*c(n-1);
    }(n);
}

@nanjixiong218
Copy link

结果应该是什么?2010么?需要验证一下。

@chriswenwu
Copy link

 function foo() {
        var y = 0, sum = false, k, klen;
        for (i = 0; i < 7777777; i++) {
            k = i.toString();
            klen = k.length;
            for (j = 0; j < klen; j++) {
                if (j == 0) {
                    continue;
                } else if (k.charAt(j) == k.charAt(j - 1)) {
                    sum = false;
                    continue;
                } else {
                    sum = true;
                }
            }
            if (sum && (parseInt(k)%2==0)) ++y; else sum = false;
        }
        return y;
    }
    document.write(foo());

@styling
Copy link

styling commented May 30, 2014

注意末尾必须为1, 3, 5 ,7首尾不为0 剩下的就是判断是几位数下 有多少种组合

@jiangtao
Copy link

jiangtao commented Jun 4, 2014

这个题目略难 想不起出来的说

@wsgouwan
Copy link

        function getValue(num){
            if( num > 9 ) num =9 ;
            var num = Number(new Array(num+1).join(7)), // 创建一个最大的数字出来
                arr = [];
            //对这个数字循环
            for(var i = 0; i < num; i ++){
                var onOff = false ;
                var temp = (i+'').split('');    
                onOff = temp.every(function(v){ return v <= num });
                temp = Number(temp.join(''));
                if( onOff && temp%2 != 0 ){
                    arr.push( temp )
                }
            }
            return arr
        };
        console.log( getValue(3) )

@rambo-panda
Copy link

// 对自己cpu好点  我就测试  0,1,2,3吧  TODO    下面递归排列算法部分来自github学习 如有版权问题,告诉楼主 楼主请直接删除
function Pem(arr, num) {
    var r = [];
    (function f(t, a, n) {
    if (n == 0){
        var vlaue = t.join('')-0;
        if(vlaue%2 === 0){
            return;
        }
        return r.push(t.join(''));
    }
    for (var i = 0, l = a.length; i < l; i++) {
    f(t.concat(a[i]), a.slice(0, i).concat(a.slice(i + 1)), n - 1);
    }
    })([], arr, num);
    return r;
}

var odds =Pem([0,1,2,3],4);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment