所属作业: hw5
数据结构: 列表, 字典
算法: 循环
提示:
list(map(int,input().split()))
方法一:双重循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # 找和为k的两个元素
# 首先,读取输入的序列长度n和目标和k
n, k = map(int, input().split())
# 读取序列中的n个整数,并将其存储在列表nums中
nums = list(map(int, input().split()))
# 初始化一个标志变量success,用于记录是否找到满足条件的元素
success = False
# 使用双重循环遍历所有可能的元素对
for i in range(n):
for j in range(i + 1, n): # 确保j总是大于i,避免重复检查同一对
# 检查当前元素对的和是否等于k
if nums[i] + nums[j] == k:
if success == False: # 如果还没有找到满足条件的元素对
print("yes") # 输出"yes"
success = True # 更新标志变量,表示已经找到满足条件的元素对
# 如果遍历完所有元素对后仍未找到满足条件的元素对
if success == False:
print("no") # 输出"no"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 首先,读取输入的序列长度n和目标和k
n, k = map(int, input().split())
# 读取序列中的n个整数,并将其存储在列表nums中
nums = list(map(int, input().split()))
# 使用双重循环遍历所有可能的元素对
for i in range(n):
for j in range(i + 1, n):
# 检查当前两个元素的和是否等于k
if nums[i] + nums[j] == k:
# 如果找到了这样的元素对,输出"yes"并退出程序
print("yes")
exit()
# 如果遍历完所有元素对都没有找到符合条件的,输出"no"
print("no")
|
方法二:set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| # 首先,我们读取输入的两个整数 a 和 b
# a 是序列的长度 n,b 是我们要检查的目标和 k
a, b = map(int, input().split())
# 然后,我们读取序列中的 n 个整数
n = list(map(int, input().split()))
# 创建一个空集合,用于存储我们已经看到的数字
seen = set()
# 遍历序列中的每个数字
for i in n:
# 计算当前数字 i 需要的目标数字,即 b - i
target = b - i
# 检查目标数字是否已经在集合 seen 中
if target in seen:
# 如果在,说明找到了两个数字的和为 b,输出 "yes"
print("yes")
exit() # 找到后立即退出程序
# 如果没有找到,将当前数字 i 添加到集合 seen 中
seen.add(i)
# 如果遍历完所有数字后仍未找到,输出 "no"
print("no")
|