第一題:無向圖
代碼如下:
def min_path(n, B): node_list = [0]*(n+1) # 保存節點的距離 for path in B: # 遍歷路徑,使后一節點距離值等於前一節點距離值加一 x, y = path node_list[y]=node_list[x]+1 depth=0 # 找到最大深度 for i in range(1, n+1): depth=max(depth, node_list[i]) # 計算最短路徑,即最深的路徑走一遍,其他路徑走2遍 return 2*n-2-depth if __name__ == '__main__': n=int(input().strip()) B=[] # 得到路徑列表 for i in range(n-1): A=[int(i) for i in input().strip().split(" ")] if A[0]>A[1]: A[0], A[1] = A[1], A[0] # 使得第一個元素小於第二個元素 B.append(A) B.sort(key=lambda x:x[0])# 按第一個元素排序 result=min_path(n,B) print(result)
運行結果:
4 1 2 1 3 3 4 4
第二題:字符串:
# 思路:確定填充每相鄰K個
0
得到的總長度
代碼如下:
N,k = [int(i) for i in input().strip().split(" ")] list=[int(i) for i in input().strip().split(" ")] zero_ind=[] for i in range(N): if list[i]==0: zero_ind.append(i+1) zero_ind.append(N+1) max_len=zero_ind[k-1] for i in range(k+1, len(zero_ind)): max_len=max(max_len, zero_ind[i]-zero_ind[i-k-1]-1) print(max_len)
運行:
10 2
1 0 0 1 0 1 0 1 0 1
5
Process finished with exit code 0