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 中的,剩下的自己想吧
回答:
穷举不就完了:
- a + b 在数组里,可以算出所有 b 的潜在值
- b + c 和 a + b + c 都在数组里,可以找出所有潜在值
- 两者一合并
以上是 js中或python中指定数组,如何循环出a+b+c必需是数组里有的数 的全部内容, 来源链接: utcz.com/p/937780.html