Last active
August 29, 2015 14:01
-
-
Save jikeytang/e6d1d1417b2ec570a204 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140521-题目3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
求0—7所能组成的奇数个数,不允许重复。 | |
比如:1,3,5组成的奇数个数为: | |
1,13,31,15,51,35,53,135,531,513. | |
共10个 | |
回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
```javascript |
zxsoft
commented
May 21, 2014
同学,组成的奇数中允许数字重复么?
@jackhou2007
不允许重复。
//奇数额 个位是奇数就好了是么
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);
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);
}
结果应该是什么?2010么?需要验证一下。
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());
注意末尾必须为1, 3, 5 ,7首尾不为0 剩下的就是判断是几位数下 有多少种组合
这个题目略难 想不起出来的说
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) )
// 对自己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