依图:算法岗笔试题
四道题:40分、
1.单向地铁站 N个站台(0,。。。N-1),两个List 每个站台进站和出站人数,计算总共花费。如某人从i站进j站出,花费j-i 过了90%
N=int(input()) inZ =list(map(int,input().split())) outZ=list(map(int,input().split())) res=0 for i in range(N): if outZ[i]!=0: c=0 for j in range(i): if inZ[j]!=0: if c+inZ[j]<=outZ[i]: res+=(inZ[j]*(i-j)) c+=inZ[j] inZ[j]=0 else: res+=(outZ[i]-c)*(i-j) inZ[j]=inZ[j]-(outZ[i]-c) c=outZ[i] break print(res)2.N个地点,每个地点Ni个蛋糕,M条路径,每条路需要花费时间Mi。计算从S点到D点最少花费时间以及可以买到的最多蛋糕数量。
采用Floyd算法。稍作改变了一下。没有过😂
3.数组,K个操作:每次取两个数去掉,然后将他们的和放在数组尾。问数组最多多少个3的倍数。AC
N,K=map(int,input().split()) List=list(map(int,input().split())) for i in range(N): List[i]=List[i]%3 List.sort() if List.count(0)==N: print(N) else: t0=List.count(0) t1=List.count(1) t2=List.count(2) res=t0 while K>0 and t1>0 and t2>0: K-=1 t1-=1 t2-=1 res+=1 if K==0: print(res) elif t1==0: while K>0 and t2>0: K-=2;t2-=3;res+=1; print(res) elif t2==0: while K>0 and t1>0: K-=2; t1-=3; res+=1; print(res)4.不记得了,没怎么看