还是那个题
n = int(input())
m = int(input())
k = list(map(int, input().split()))
kk =[0] * (n ** 2)
def solve(n):
i = 0
for c in range(n):
for d in range(n):
kk[i] = k[c] + k[d]
i = i + 1
solve(n)
kk.sort()
def binary_search(x):
l = 0
r = n * n - 1
while l <= r:
i = (l + r) // 2
if kk[i] == x:
return True
elif kk[i] < x:
l = i + 1
else:
r = i - 1
return False
f = False
for a in range(n):
for b in range(n):
if (binary_search(m - k[a] - k[b])):
f = True
if f:
print("Yes")
else:
print("No")
二级目录
样例1:
输入:
n = 4
a = {1,2,4,7}
k = 13
输出:
Yes(13 = 2 + 4 + 7}
样例2:
输入:
n = 4
a = {1,2,4,7}
k = 15
输出:
No
n = int(input())
a = list(map(int,input().split()))
k = int(input())
def dfs(i,suu):
if i == n:
return suu == k
if dfs(i + 1, suu):
return True
if dfs(i + 1, suu + a[i]):
return True
return False
def solve():
if dfs(0, 0):
print("Yes")
else:
print("No")
solve()