各個公司實習筆試題集錦

2021-09-18 01:56:42 字數 2340 閱讀 3821

實習程式設計題,方法比較low,很*****,如有錯誤,請見諒,望及時指正。

阿里

小明在雙十一晚會上**贏得了一次了一次天貓超市免單機會,享受在乙個包裹內最大體積v,最大重量m內免單。假設商品i,體積vi,重量mi,庫存si,**pi。目前,天貓超市的商品分為生鮮水產(1)、食品酒類(2)、美妝個護(3)、居家生活(4)四大類,其中生鮮水產不與美妝個護同包裹。請你幫助小明在購物車裡添置商品使得總價值最大。

輸入:

商品總類n,包裹限定總體積v,包裹限定總重量m(接下來會有n行)

商品1體積,商品1重量,商品1庫存,商品1**,商品1型別

商品2體積,商品2重量,商品2庫存,商品2**,商品2型別

商品3體積,商品3重量,商品3庫存,商品3**,商品3型別

輸出:

購物車裡商品的總價值

輸入範例:

3, 40, 30

10, 10, 10, 10, 1

13, 10, 12, 11, 3

3, 4, 6, 5, 3

輸出:

分析一波:加強版的0-1揹包問題,多個庫存可以當作有s件質量、體積、**,但是不相同的商品。生鮮和美妝不能裝在一起,可以把原問題拆解為(生鮮水產、食品酒類、居家生活)和(食品酒類、美妝個護、居家生活)兩個子問題,再返回兩個子問題的求解中較大的乙個作為最終的求解。

# coding:utf-8

# 動態規劃求解

def f(n, v, m, cv, cw, cp):

res = [[[0 for _ in range(m+1)] for _ in range(v+1)] for _ in range(n+1)]

for i in range(n+1):

if i == 0:

continue

for j in range(v+1):

if j == 0:

continue

for k in range(m+1):

if k == 0:

continue

if j < cv[i] & k < cw[i]:

res[i][j][k] = res[i-1][j][k]

else:

res[i][j][k] = max(res[i-1][j][k], res[i-1][j-cv[i]][k-cw[i]] + cp[i])

return res[n][v][m]

# cv為商品體積的列表,cw為商品重量的列表,cs為商品庫存的列表,cp為商品**的列表,ci為商品型別的列表,

def main(n, v, m, cv, cw, cs, cp, ci):

k = 0

# 若給出的商品含有生鮮和美妝型別商品發生衝突

if 1 in ci and 3 in ci:

# 將生鮮和化妝品分成兩個子問題

cv1 = [0]; cw1 = [0]; cp1 = [0]

cv2 = [0]; cw2 = [0]; cp2 = [0]

for i in range(len(ci)):

if ci[i] != 1:

for _ in range(cs[i]):

if ci[i] != 3:

for _ in range(cs[i]):

k1 = f(n, v, m, cv1, cw1, cp1)

k2 = f(n, v, m, cv2, cw2, cp2)

k = max(k1, k2)

else:

cvt = [0]; cwt = [0]; cpt = [0]

for i in range(len(ci)):

for _ in range(cs[i]):

k = f(n, v, m, cvt, cwt, cpt)

return k

if __name__ == "__main__":

print(main(3, 40, 30, [10, 13, 3], [10, 10, 4], [10, 12, 6], [10, 11, 5], [1, 3, 3]))

一家公司想在某市開展運輸服務,這個城市只有乙個加油站,該公司已經確定了一些接載乘客的地點(x, y),公司希望用直線連線起來,以便所有路徑都精確覆蓋加油站一次。請你幫助公司確定路徑的數量,使得路徑最少,並且覆蓋所有的接載點。

筆試題集錦

第一部分 必做 計算機基礎類 所有的選擇題都是多項選擇 1 假設進棧次序是e1,e2,e3,e4,那可能的出棧次序是 a e2,e4,e3,e1 b e2,e3,e4,e1 c e3,e2,e4,e1 d e1,e2,e4,e3 2 表示式x a b c d e的字尾表示形式可以是 a xab cd...

C C 筆試題集錦

1.求下面函式的返回值 微軟 int func x int countx 0 while x countx x x x 1 return countx 假定x 9999。答案 8 思路 將x轉化為2進製,看含有的1的個數。2.什麼是 引用 申明和使用 引用 要注意哪些問題?答 引用就是某個目標變數的...

微軟筆試題集錦

1.下面哪一項是二進位制數01011001乘以0111001後再加上1101110的結果 a 0001010000111111 b 0101011101110011 c 0011010000110101 解析 不需要硬算,前面乘出來最後三位是001,這樣加起來最後三位就是111 2.a,b,c,d都...