CSP題目 小明分蛋糕

2021-10-11 10:57:52 字數 1448 閱讀 7678

-資料結構題目

題目:小明今天生日,他有n塊蛋糕要分給朋友們吃,這n塊蛋糕(編號為1到n)的重量分別為a1, a2, …, an。小明想分給每個朋友至少重量為k的蛋糕。小明的朋友們已經排好隊準備領蛋糕,對於每個朋友,小明總是先將自己手中編號最小的蛋糕分給他,當這個朋友所分得蛋糕的重量不到k時,再繼續將剩下的蛋糕中編號最小的給他,直到小明的蛋糕分完或者這個朋友分到的蛋糕的總重量大於等於k。

演算法思想:先對蛋糕按重量進行排序,然後依次分發。定義乙個中間量計算當前這位朋友拿到的蛋糕重量,當大於或等於k時,停止分發,轉向下乙個朋友,同時中間量清零。結束時,若剩下最後一位朋友的蛋糕不大於k,則人數也要加一。

c++**如下:

#include

#include

using

namespace std;

#define listinitsize 16

//初次分配空間大小

#define listincrement 8

//空間分配增量大小

typedef

struct list

list;

void

initlist

( list &l )

//initlist

void

insertelem

( list &l,

int i,

int e )

//從最後乙個元素開始,直到下標為i-1(物理位置)的元素,依次向後挪乙個位置

for(

int j = l.length-

1; j >= i-

1; j--

) l.pdata[j+1]

= l.pdata[j]

; l.pdata[i-1]

= e;

//在陣列下標為i-1的位置上插入元素e

l.length +=1

;//順序表的長度加1

}//insertelem

void

ranklist

( list &l )}}

}//ranklist

intfriendnum

( list &l,

int n,

int k )}if

( sum >0)

//蛋糕分完但最後乙個朋友的蛋糕總重量沒有達到k

return num;

}//friendnum

intmain()

ranklist

(l);

//排序

sum =

friendnum

(l,n,k)

;//計算拿到蛋糕的朋友數量

cout<<

"-分到蛋糕的朋友總數為:"

<}

csp認證 201703 1分蛋糕

問題描述 小明今天生日,他有n塊蛋糕要分給朋友們吃,這n塊蛋糕 編號為1到n 的重量分別為a1,a2,an。小明想分給每個朋友至少重量為k的蛋糕。小明的朋友們已經排好隊準備領蛋糕,對於每個朋友,小明總是先將自己手中編號最小的蛋糕分給他,當這個朋友所分得蛋糕的重量不到k時,再繼續將剩下的蛋糕中編號最小...

小明分蛋糕(附題解)

嗨,我又來寫部落格了,不過這次是 我 出題 你們 來寫偶 小明過生日,邀請了他的小夥伴們一起來ta家慶祝,一開始,ta們可開心了,可到了分蛋糕時,遇到了難題,小明一共有n個好朋友 含小明自己 每人需要吃m塊蛋糕才能吃飽。蛋糕的大小w,問可以分完嗎?輸入 第一行 乙個整數n n 0 第二行 n個整數m...

小明分蛋糕問題c語言求解

問題描述 小明今天生日,他有n塊蛋糕要分給朋友們吃,這n塊蛋糕 編號為1到n 的重量分別為a1,a2,an。小明想分給每個朋友至少重量為k的蛋糕。小明的朋友們已經排好隊準備領蛋糕,對於每個朋友,小明總是先將自己手中編號最小的蛋糕分給他,當這個朋友所分得蛋糕的重量不到k時,再繼續將剩下的蛋糕中編號 最...