-資料結構題目
題目:小明今天生日,他有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時,再繼續將剩下的蛋糕中編號 最...