面試機試問題之備考

2021-07-30 06:55:18 字數 4234 閱讀 6331

今天做了一道機試題目,又遇到了乙個小問題,不多說直接看程式:

#!/usr/bin/env python

#coding:utf-8

'''題目描述

臨近期末,讓小東頭疼的考試又即將到來了,而且是小東最不喜歡的科目。遺憾的是,小東得知d天後

她必須參加此次考試。小東的父親對她要求非常嚴格,要求她立即開始複習功課。為照顧她的情緒,

父親要求她每天該科目的學習時間在imintime到imaxtime之間,並計畫在考前檢查小東是否按要求做了

。若未能完成,小東將會受到懲罰。現在小東的父親要求檢查小東的備考情況。遺憾的是,由於專注

於備考,小東只是記錄了自己備考的總時間sumtime,並沒有記錄每天覆習所用的時間,也不知道準

備情況是否符合父親的要求。她想知道是否能夠製作乙個滿足要求的時間表以應付父親的檢查。

小東希望你能夠幫到她,你是否願意?

輸入輸入中有多組測試資料。每組測試資料的第一行包含兩個整數d和sumtime,1<=d<=30,

0<=sumtime<=240,分別表示小東複習的天數以及每天用於複習的時間之和。緊隨其後的d行中,

每行包含兩個空格分隔的整數,為小東父親要求小東在這一天用於複習時間的範圍imintime和imaxtime

,0<=imintime<=imaxtime<=8。

樣例輸入

1 48

5 72 5

0 13 5

輸出對每組測試資料,若能夠做出乙個滿足小東父親要求的時間表,則在單獨的一行中輸出yes,並在隨後

的一行中給出每天覆習花費的時間。否則輸出no。

若滿足要求的時間表不唯一,小東希望給父親留下比較用功的映像,開始時每天覆習的時間比較長。

樣例輸出

noyes

1 4時間限制

c/c++語言:1000ms其它語言:3000ms

記憶體限制

c/c++語言:65536kb其它語言:589824kb

'''while 1:

(d, sumtime)=(int(x) for x in raw_input().split())

time_list=

# if d==1:

# day_time_list=raw_input().split()

# if sumtime>=day_time_list[0] and sumtime<=day_time_list[1]:

# print 'yes'

# else:

# print 'no'

else:

for i in range(d):

day_time_list=raw_input().split()

min_time_list=

max_time_list=

for j in range(d):

#print min_time_list

min_time=sum(min_time_list)

max_time=sum(max_time_list)

if sumtime>=min_time and sumtime<=max_time:

print 'yes'

final_list=

stime=sumtime

for i in range(d-1):

tmp=min(max_time_list[i], stime-(sum(min_time_list[i+1:])))

stime-=tmp

lasttime=sumtime-sum(final_list)

#print final_list

res=''#用於將int型別的數值轉換為str型別的字串

for v in final_list:

res+=str(v) + ' '

print res.strip()

#print ' '.join([str(r) for r in final_list]).strip()

else:

print 'no'

這樣的話是可以全部ac正確的,但是下面改動了一點就只能ac 40%或者60%了,不知道是為什麼:

#!/usr/bin/env python

#coding:utf-8

'''題目描述

臨近期末,讓小東頭疼的考試又即將到來了,而且是小東最不喜歡的科目。遺憾的是,小東得知d天後

她必須參加此次考試。小東的父親對她要求非常嚴格,要求她立即開始複習功課。為照顧她的情緒,

父親要求她每天該科目的學習時間在imintime到imaxtime之間,並計畫在考前檢查小東是否按要求做了

。若未能完成,小東將會受到懲罰。現在小東的父親要求檢查小東的備考情況。遺憾的是,由於專注

於備考,小東只是記錄了自己備考的總時間sumtime,並沒有記錄每天覆習所用的時間,也不知道準

備情況是否符合父親的要求。她想知道是否能夠製作乙個滿足要求的時間表以應付父親的檢查。

小東希望你能夠幫到她,你是否願意?

輸入輸入中有多組測試資料。每組測試資料的第一行包含兩個整數d和sumtime,1<=d<=30,

0<=sumtime<=240,分別表示小東複習的天數以及每天用於複習的時間之和。緊隨其後的d行中,

每行包含兩個空格分隔的整數,為小東父親要求小東在這一天用於複習時間的範圍imintime和imaxtime

,0<=imintime<=imaxtime<=8。

樣例輸入

1 48

5 72 5

0 13 5

輸出對每組測試資料,若能夠做出乙個滿足小東父親要求的時間表,則在單獨的一行中輸出yes,並在隨後

的一行中給出每天覆習花費的時間。否則輸出no。

若滿足要求的時間表不唯一,小東希望給父親留下比較用功的映像,開始時每天覆習的時間比較長。

樣例輸出

noyes

1 4時間限制

c/c++語言:1000ms其它語言:3000ms

記憶體限制

c/c++語言:65536kb其它語言:589824kb

'''while 1:

(d, sumtime)=(int(x) for x in raw_input().split())

time_list=

if d==1:

day_time_list=raw_input().split()

if sumtime>=day_time_list[0] and sumtime<=day_time_list[1]:

print 'yes'

else:

print 'no'

else:

for i in range(d):

day_time_list=raw_input().split()

min_time_list=

max_time_list=

for j in range(d):

#print min_time_list

min_time=sum(min_time_list)

max_time=sum(max_time_list)

if sumtime>=min_time and sumtime<=max_time:

print 'yes'

final_list=

stime=sumtime

for i in range(d-1):

tmp=min(max_time_list[i], stime-(sum(min_time_list[i+1:])))

stime-=tmp

lasttime=sumtime-sum(final_list)

#print final_list

res=''#用於將int型別的數值轉換為str型別的字串

for v in final_list:

res+=str(v) + ' '

print res.strip()

#print ' '.join([str(r) for r in final_list]).strip()

else:

print 'no'備考

如果有興趣的朋友明白問題在**歡迎指教,謝謝

It面試問題

一般第一輪技術面都是來考察你最基本的技術功底。招聘季節,隨處可見抱著厚厚的 程式設計師面試寶典 啃的學生。偶爾也能看見 程式設計之美 劍指offer 的神書。這些經驗書確實有用。但是要想全面的掌握筆試面試的基礎考點,還是需要完整的複習。其實,筆試面試對計算機基礎的考察是萬變不離其宗的。其考點無非分為...

面試 Hbase面試問題

1.hbase怎麼預分割槽?2.hbase怎麼給web前台提供介面來訪問?3.htable api有沒有執行緒安全問題,在程式中是單例還是多例?4.hbase有沒有併發問題?5.metaq訊息佇列,zookeeper集群,storm集群,就可以完成對 推薦系統功能嗎?還有沒有其他的中介軟體?6.st...

面試問題 十大面試問題

在面試中,你會被問到的問題將是 對於許多不同型別的工作,一般問題可以是相同的。以下是一些可以被問到的常見問題。1.你的技能 您的面試官想知道您是否具備完成工作的技能,因此他們可能會問 了解自己的優勢,並提及與您正在接受面試的工作相關的優勢。盡可能提供您之前的工作或生活經歷的例子。雇主尋求的典型優勢是...