链接:https://ac.nowcoder.com/acm/contest/6220/A
牛牛想知道所有的长度为n的数中,各个位上的数字之和为m的这些数的和是多少呢。给定n和m,求这些数的和。
利用回溯法
/**
* 返回这样的数之和
* @param n int整型 数的长度
* @param m int整型 各个为之和
* @return long长整型
*/
function sum( n , m ) {
// write code here
let path = []
let first = true
let res = 0;
let check = (num)=>{
let ans = 0;
for(let i=0;i<num.length;i++){
ans+=num[i]
}
if(ans==m){
return true;
}else{
return false;
}
}
let backtrack = () => {
if(path.length==n){
let flag = check([...path])
if(flag){
res+=parseInt(path.join(''))
return
}
}else if(path.length>n){
return
}
for(let i=0;i<10;i++){
if(first){
first=false;
continue;
}
path.push(i);
backtrack();
path.pop()
}
}
backtrack();
return res;
}
module.exports = {
sum : sum
};
京公网安备 11010502036488号