10個小孩圍成一圈分糖果,老師分給第乙個孩子10塊,第二個小孩2塊,後面依次分的糖果數量為8、22、16、4、10、6、14、20。然後所有的小孩同時將手中的糖果分一半給右邊的小孩,糖果為奇數的可向老師要一塊。問經過幾次後,大家手中的糖果的塊數將一樣多,每個人有多少糖果。
這個問題的關鍵在於「所有的小孩同時將手中的糖果分一半給右邊的小孩」之後每個人的糖果數是如何變化的?
//每個小孩糖果初始值以及迴圈次數初始值intarr = ;
inttimes = 0;
//迴圈繼續的條件是任意兩個小孩的糖果數不相等
// 函式isequal()判斷任意兩個小孩的糖果數是否相等
while(isequal(arr))
arr [9] =( temp1+arr [9])/2;//第9個孩子的糖果變化
times ++;//分配完畢 迴圈次數增加
for(intj = 0; j<10; j++)//誰的糖果為奇數就增加1
}system.out.printf("經過%d次的交換,每個人都有%d顆糖",times ,arr [0]);
}/**
*判斷乙個一維陣列的所有元素是否相等
*@param
arr
陣列*
@return
true-相等 false-不相等
*/private static booleanisequal(intarr)
}return false;
}
分糖果問題
問題描述 有不同分數的小孩排隊,怎麼分糖果使得糖果數最小,且分數高的小孩分到盡可能多的糖果。分析 每個小孩至少可分到乙個糖果,且分數不固定,所以分數高的小孩要盡可能的只比旁邊的兩個人分的糖果多,而分數低的要盡可能的少。解題思路 分別從前後進行掃瞄,讓每個小孩都能分到糖果,保證分數高的盡可能多於兩邊的...
分糖果問題(java)
10個小孩圍成一圈分糖果,老師分給第乙個小孩10塊,第二個小孩2塊,第三個小孩8塊,第四個小孩22塊,第五個小孩16塊,第六個小孩4塊,第七個小孩10塊,第八個小孩6塊,第九個小孩14塊,第十個小孩20塊。然後所有的小孩同時將手中的糖分一半給右邊的小孩 糖塊數為奇數的人可向老師要一塊。問經過幾次後大...
分糖果問題 藍橋杯
問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...