#中国电信##校招笔试#
非计算机专业,考计算机类的卷子。行测挺简单;专业知识跟编程我觉得难,因为我不是计算机专业的。专业知识有考机器学习,也有考计科的东西;编程第一题简单,第二题超时20%通过,第三题什么判断括号不会
。接着学习吧,顺便把自己编程第二题的错误答案发一下抛砖引玉。
import sys
CHAR_MAP = {key: value for value, key in enumerate([
"a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x",
"y", "z"
], 1)}
CHAR_ARR = [(c_1, c_2, c_3) for c_1 in CHAR_MAP.keys() for c_2 in CHAR_MAP.keys() for c_3 in CHAR_MAP.keys()]
condition_1 = lambda v_1, v_2, v_3, n: v_1 + v_2 + v_3 == n
condition_2 = lambda v_1, v_2, v_3, D: abs(v_1 - v_2) in D and abs(v_2 - v_3) in D
def check(n: int, D: list[int]):
result: str = None
result_arr = []
for c_1, c_2, c_3 in CHAR_ARR:
v_1, v_2, v_3 = CHAR_MAP[c_1], CHAR_MAP[c_2], CHAR_MAP[c_3]
if condition_1(v_1, v_2, v_3, n) and condition_2(v_1, v_2, v_3, D):
result_arr.append((c_1, c_2, c_3))
if len(result_arr) == 0:
result = "NO"
else:
result_tup = min(result_arr, key=lambda tup: tup[0] + tup[1] + tup[2])
result = result_tup[0] + result_tup[1] + result_tup[2]
return result
if __name__ == "__main__":
data_group_num = int(sys.stdin.readline())
for _ in range(data_group_num):
a = sys.stdin.readline().split()
n, k = int(a[0]), int(a[1])
D = list(map(lambda s: int(s), sys.stdin.readline().split()))
print(check(n, D))
非计算机专业,考计算机类的卷子。行测挺简单;专业知识跟编程我觉得难,因为我不是计算机专业的。专业知识有考机器学习,也有考计科的东西;编程第一题简单,第二题超时20%通过,第三题什么判断括号不会
import sys
CHAR_MAP = {key: value for value, key in enumerate([
"a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x",
"y", "z"
], 1)}
CHAR_ARR = [(c_1, c_2, c_3) for c_1 in CHAR_MAP.keys() for c_2 in CHAR_MAP.keys() for c_3 in CHAR_MAP.keys()]
condition_1 = lambda v_1, v_2, v_3, n: v_1 + v_2 + v_3 == n
condition_2 = lambda v_1, v_2, v_3, D: abs(v_1 - v_2) in D and abs(v_2 - v_3) in D
def check(n: int, D: list[int]):
result: str = None
result_arr = []
for c_1, c_2, c_3 in CHAR_ARR:
v_1, v_2, v_3 = CHAR_MAP[c_1], CHAR_MAP[c_2], CHAR_MAP[c_3]
if condition_1(v_1, v_2, v_3, n) and condition_2(v_1, v_2, v_3, D):
result_arr.append((c_1, c_2, c_3))
if len(result_arr) == 0:
result = "NO"
else:
result_tup = min(result_arr, key=lambda tup: tup[0] + tup[1] + tup[2])
result = result_tup[0] + result_tup[1] + result_tup[2]
return result
if __name__ == "__main__":
data_group_num = int(sys.stdin.readline())
for _ in range(data_group_num):
a = sys.stdin.readline().split()
n, k = int(a[0]), int(a[1])
D = list(map(lambda s: int(s), sys.stdin.readline().split()))
print(check(n, D))
全部评论
python
Python 3.13.7 (main, Aug 15 2025, 12:34:02) [GCC 15.2.1 20250813] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ord('a')
97
>>> chr(97)
'a'
不需要CHAR_MAP这种东西。。
每次循环我觉得可以只去循环符合间隔的 而不是全部循环再筛选间隔
(你这样做 对于前两位已经不符合的 还是会把第三位跑完)
相关推荐
09-27 10:15
门头沟学院 自动化 点赞 评论 收藏
分享
点赞 评论 收藏
分享