C 實現分蘋果問題

2021-09-29 03:06:52 字數 1120 閱讀 7671

題目內容

問題:n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能從乙隻奶牛身上拿走恰好兩個蘋果到另乙個奶牛上,問最少需要移動多少次可以平分蘋果,如果方案不存在輸出 -1。

輸入描述:每個輸入包含乙個測試用例。每個測試用例的第一行包含乙個整數 n(1 <= n <= 100),接下來的一行包含 n 個整數 ai(1 <= ai <= 100)。

輸出描述:輸出一行表示最少需要移動多少次可以平分蘋果,如果方案不存在則輸出 -1。

測試用例

輸入例子:  

4 7 15 9 5

輸出例子:

3

解題思路:

1、因為是平分蘋果、因此蘋果總數必須是奶牛個數的整數倍

2、算出蘋果的平均數、用每個奶牛的蘋果減去平均數、得到每個奶牛的多出或者相差的蘋果數

3、因為每次只能移動兩個蘋果、因此每個奶牛對出或者相差的蘋果數必須是2的倍數(也就是對num % 2 == 0)

4、將相減大於0的所有蘋果相加除以2就是需要移動的次數(因為每次只能移動兩個)

**示例

#include

using

namespace std;

intmain()

if(count % size !=0)

// 判斷蘋果總數是否是奶牛總數的倍數

count = count / size;

// 計算平均數

int sum =0;

for(

int i =

0; i < size;

++i)

if(arr[i]

>=0)

// 將相減大於0的蘋果加起來

} cout <<

"次數:"

<< sum /

2<< endl;

return0;

}

問題 分蘋果

題目描述 給定一堆共n個蘋果,兩個人輪流進行如下操作 1,將這一堆蘋果分成兩堆,每堆的蘋果數目必須不同 2,另乙個人選擇其中一堆作為新的堆,開始下一輪操作。直到某個人不能滿足要求輸掉比賽,遊戲結束。假設兩個人都足夠聰明 總會選擇對自己最優的方案。比如說有3個蘋果,第乙個人只能選擇分兩堆1 2,第二個...

分蘋果(C語言實現)

果園裡有堆蘋果,n 1 n 9 只熊來分。第一隻熊把這堆蘋果平均分為n份,多了乙個,它把多的乙個扔了,拿走了乙份。第二隻熊把剩下的蘋果又平均分成n份,又多了乙個,它同樣把多的乙個扔了,拿走了乙份,第 三 第四直到第n隻熊都是這麼做的,問果園裡原來最少有多少個蘋果?示例和說明如下 我的方法很簡單就是從...

問題 分蘋果 博弈

時間限制 1 sec 記憶體限制 128 mb 給定一堆共n個蘋果,兩個人輪流進行如下操作 1,將這一堆蘋果分成兩堆,每堆的蘋果數目必須不同 2,另乙個人選擇其中一堆作為新的堆,開始下一輪操作。直到某個人不能滿足要求輸掉比賽,遊戲結束。假設兩個人都足夠聰明 總會選擇對自己最優的方案。比如說有3個蘋果...