9月4号笔试题,ak
第一题:数组拼接
import sys if __name__ == "__main__": # 读取第一行的n n = int(sys.stdin.readline().strip()) # n = 3 # matrix=[[2, 5, 6, 7, 9, 5, 7],[1, 7, 4, 3, 4]] matrix = [] while True: line = sys.stdin.readline().strip() if line == "": break else: s = list(map(int, line.split(","))) matrix.append(s) m = len(matrix) max_length = len(matrix[0]) for nums in matrix: max_length = max(max_length, len(nums)) times = max_length // n + 1 res = [] start = 0 for time in range(times): for i in range(m): # n1 = len(matrix[i]) res.extend(matrix[i][start:start+n]) start += n print("".join(list(map(str, res))))第二题:零件加工的最大收益
n = 5 matrix = [[10, 1, 2], [15, 5, 6], [20, 4, 6], [15, 1, 5], [20, 4, 6,]] import sys def valid(s1, s2): if s2[-1] <= s1[1]: return True else: return False if __name__ == "__main__": # 读取第一行的n n = int(sys.stdin.readline().strip()) matrix = [] while True: line = sys.stdin.readline().strip() if line == "": break else: s = list(map(int, line.split())) matrix.append(s[1:]) matrix = sorted(matrix, key=lambda x: -x[-1]) print(matrix) n = len(matrix) dp = [0]*n dp[0] = matrix[0][0] for i in range(1, n): for j in range(i): if valid(matrix[j], matrix[i]): dp[i] = dp[j] + matrix[i][0] else: dp[i] = max(dp[i], dp[j]) print(max(dp))第三题:字符重建
s = input().strip() stack = [] res, mutil = "", 0 for i in s: if i in ["[", "(", "{"]: stack.append([res, mutil]) res, mutil = "", 0 elif i in [")", "]", "}"]: last_res, cur_mutil = stack.pop() res = last_res + res*cur_mutil elif "0" <= i <= "9": mutil = mutil * 10 + int(i) else: res += i print(res)