第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我來說一個(gè)面試題吧,2012年參與到的Facebook Programming puzzle

我來說一個(gè)面試題吧,2012年參與到的Facebook Programming puzzle

躍然一笑 2019-04-06 16:57:38
這題是當(dāng)時(shí)自己去投Facebook的時(shí)候,programmingpuzzle那關(guān)給的題目。題目如下:你有足夠數(shù)量的天秤和砝碼。每個(gè)天秤有10磅。天秤的左右兩邊可以放砝碼,也可以放天秤。題目要求是,在給定的初始組合情況下,如何添加砝碼,讓整體保證平衡。輸入是一串?dāng)?shù)字,第一行是一個(gè)整數(shù),代表當(dāng)前初始狀態(tài)一共有多少個(gè)天秤,每個(gè)天秤都有一個(gè)序號(hào)接下來往下,每?jī)尚蟹謩e代表一個(gè)天秤左右兩邊所包含的天秤序號(hào)和包含的砝碼重量每一組的格式如下:左半的砝碼重量右半的砝碼重量其中,表示數(shù)組輸入樣例如下:4//4個(gè)天秤01//0號(hào)天秤左邊放置著1號(hào)天秤02//0號(hào)天秤右邊放置著2號(hào)天秤0//1號(hào)天秤左邊啥都沒有03//1號(hào)天秤右邊放置著3號(hào)天秤3//2號(hào)天秤左邊有三磅重的砝碼0//2號(hào)天秤右邊啥都沒有0//3號(hào)天秤左邊啥都沒有0//3號(hào)天秤右邊啥都沒有輸出,輸出N行。第i行代表第i個(gè)天秤的左右兩邊需要添加多少重量的砝碼輸出樣例如下:0:0141:1002:033:00大家可以試試看。Facebook當(dāng)時(shí)給我的時(shí)間是1小時(shí),當(dāng)時(shí)做完這題就可以進(jìn)入phoneinterview,可惜掛在了phoneinterview那--。我是分割線不用考慮力矩,單純的天秤左右配平。不會(huì)出現(xiàn)嵌套情況。還有就是,當(dāng)時(shí)我在做這題的時(shí)候,input不一定是一棵樹,有可能是一個(gè)森林。測(cè)試用例我得找一找,不一定有存了。。一年前的題,我也換過了電腦。我準(zhǔn)備周一把我的解答放上來。
查看完整描述

2 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

小花了一點(diǎn)時(shí)間理解題意,個(gè)人解法如下:假設(shè)天平之間沒有嵌套關(guān)系(即不會(huì)出現(xiàn)1在2左邊,2在1左邊這種情況)為了使一個(gè)天平平衡,首先得把放在其左邊或右邊的天平配平假設(shè)力矩為0,天平左右兩邊重量不等時(shí)在少的一邊用砝碼補(bǔ)上重量如果符合以上,題目綜合性不錯(cuò),涉及了簡(jiǎn)單樹的遍歷以及貪心算法下面是代碼(腦袋不好使?fàn)顟B(tài),不知道弄對(duì)了沒——反正代碼風(fēng)格成渣渣了)importsys
defset_balance(id):
ifnotbalanced[id]:
foriinlcld[id]:
lw[id]+=set_balance(i)
foriinrcld[id]:
rw[id]+=set_balance(i)
iflw[id]ladd[id]=rw[id]-lw[id]
lw[id]+=ladd[id]
eliflw[id]>rw[id]:
radd[id]=lw[id]-rw[id]
rw[id]+=radd[id]
balanced[id]=True
returnlw[id]+rw[id]
n=int(sys.stdin.readline())
lw=[5foriinrange(n)]
rw=[5foriinrange(n)]
lcld=[[]foriinrange(n)]
rcld=[[]foriinrange(n)]
foriinrange(n):
row=[int(v)forvinsys.stdin.readline().split()]
lw[i]+=row[0]
forvinrow[1:]:
lcld[i].append(v)
row=[int(v)forvinsys.stdin.readline().split()]
rw[i]+=row[0]
forvinrow[1:]:
rcld[i].append(v)
balanced=[Falseforiinrange(n)]
ladd=[0foriinrange(n)]
radd=[0foriinrange(n)]
foriinrange(n):
get_balance(i)
foriinxrange(n):
print"%d:%d%d"%(i,ladd[i],radd[i])
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-06
  • 2 回答
  • 0 關(guān)注
  • 329 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)