动态规划之礼品分组
Description
元旦快到了,校學(xué)生會(huì)讓樂(lè)樂(lè)負(fù)責(zé)新年晚會(huì)的紀(jì)念品發(fā)放工作。為使得參加晚會(huì)的同學(xué)所獲得 的紀(jì)念品價(jià)值相對(duì)均衡,他要把購(gòu)來(lái)的紀(jì)念品根據(jù)價(jià)格進(jìn)行分組,但每組最多只能包括兩件紀(jì)念品, 并且每組紀(jì)念品的價(jià)格之和不能超過(guò)一個(gè)給定的整數(shù)。為了保證在盡量短的時(shí)間內(nèi)發(fā)完所有紀(jì)念品,樂(lè)樂(lè)希望分組的數(shù)目最少。
你的任務(wù)是寫(xiě)一個(gè)程序,找出所有分組方案中分組數(shù)最少的一種,輸出最少的分組數(shù)目。
Input
共n+2行:
第1行包括一個(gè)整數(shù)w,為每組紀(jì)念品價(jià)格之和的上上限。
第2行為一個(gè)整數(shù)n,表示購(gòu)來(lái)的紀(jì)念品的總件數(shù)G。
第3至n+2行每行包含一個(gè)正整數(shù)Pi(5≤Pi≤w)表示所對(duì)應(yīng)紀(jì)念品的價(jià)格。
Output
一個(gè)整數(shù),即最少的分組數(shù)目。
Sample Input
100
9
90
20
20
30
50
60
70
80
90
思路:
題目?jī)蓚€(gè)要求,每組最多兩個(gè),最終組數(shù)最少。
其實(shí)這道題很簡(jiǎn)單,先排序(這邊假定從小到大)sort函數(shù),再分組,分組方法為最后一個(gè)加上最前一個(gè),如果和<=100,組數(shù)+1,最前面一個(gè)往后,最后一個(gè)往前。如果和>100,說(shuō)明過(guò)大,大的那個(gè)只能一個(gè)一組,組數(shù)+1,最后面一個(gè)往前。
我思考的時(shí)候陷入了一個(gè)誤區(qū),如果MAX+MIN<100,要不要讓MAX加上一個(gè)比MIN更小的,更好的利用空間,列出幾組數(shù)據(jù)后發(fā)現(xiàn)沒(méi)這必要。
總結(jié)
- 上一篇: matlab 曲线拟合求导,基于matl
- 下一篇: 查询成绩(要求用链表完成)