js中或python中指定数组,如何循环出a+b+c必需是数组里有的数

js中或python中指定数组,如何循环出a+b+c必需是数组里有的数

var str = [1, 3, 5, 6, 7, 8, 11, 13, 15, 16, 17, 18, 21, 23, 24, 25, 29, 31, 32, 33, 35, 37, 39, 41, 45, 47, 48, 52, 63, 65, 67, 68, 73, 81]

如知道a的数如何循环1-81得到b,c数跟a相加是str中才有的
var a = 6
var b = []
var c = []

a+b=必需等于str中有的数
b+c=必需等于str中有的数
a+b+c= 必需等于str有中的数

如(a+b+c) 6 + 9 + 14 = 29 str中有
分解(a+b) 6 + 9 = 15 str中有,(b+c) 9+14 = 23 str中也有


回答:

假设题目为 a,b,c不相等

const str = [1, 3, 5, 6, 7, 8, 11, 13, 15, 16, 17, 18, 21, 23, 24, 25, 29, 31, 32, 33, 35, 37, 39, 41, 45, 47, 48, 52, 63, 65, 67, 68, 73, 81]

const a=6

let b,c

const strSet=new Set(str)

const strLength=str.length

for(let i=strLength-1;i>=0;i--){

let sum=str[i] // 假设a+b+c最终和

const bAndC=sum-a; // 获得 b+c的值

console.log(bAndC)

if(!strSet.has(bAndC)) continue //数组中不存在该值 则继续下一循环

for(let j=strLength-1;j>=0;j--){ // 因为三者不相等,从倒数第二位开始循环

const supposeB=bAndC-str[j] //假设c的值为 str[j],则b为b+c的值减c

if(strSet.has(supposeB)){ // 如果数组中存在,则赋值 b,c并结束循环

b=supposeB

c=str[j]

break;

}

}

if(b&&c) break; //如果b c都有值,则结束循环

}

console.log('a:',a)

console.log('b:',b)

console.log('c:',c)


回答:

a + b = 必需等于str中的数 说明 str 中的数减 a 一定有一个数是在 str 中的,剩下的自己想吧


回答:

穷举不就完了:

  1. a + b 在数组里,可以算出所有 b 的潜在值
  2. b + c 和 a + b + c 都在数组里,可以找出所有潜在值
  3. 两者一合并

以上是 js中或python中指定数组,如何循环出a+b+c必需是数组里有的数 的全部内容, 来源链接: utcz.com/p/937780.html

回到顶部