均分纸牌(经典贪心)
生活随笔
收集整理的這篇文章主要介紹了
均分纸牌(经典贪心)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 題目描述
有N堆紙牌,編號分別為1,2,…,N。每堆上有若干張,但紙牌總數必為N的倍數。可以在任一堆上取若干張紙牌,然后移動。
移牌規則為:在編號為1堆上取的紙牌,只能移到編號為2的堆上;在編號為N的堆上取的紙牌,只能移到編號為N?1的堆上;其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。
現在要求找出一種移動方法,用最少的移動次數使每堆上紙牌數都一樣多。
例如N=4,4堆紙牌數分別為:
①9②8③17④6
移動3次可達到目的:
從 ③ 取4張牌放到 ④ (9,8,13,10)-> 從 ③取3張牌放到 ②(9,11,10,10)-> 從②取1張牌放到①(10,10,10,10)。
2 輸入輸出格式
輸入格式:
兩行
第一行為:N(N堆紙牌,1≤N≤100)
第二行為:A1,A2,…,An(N堆紙牌,每堆紙牌初始數,l≤ Ai ≤10000)
輸出格式:
一行:即所有堆均達到相等時的最少移動次數。
輸入輸出樣例
輸入樣例#1:
4
9 8 17 6
輸出樣例#1:
3
3 代碼實現
#include <iostream>using namespace std;int a[10005];總結
以上是生活随笔為你收集整理的均分纸牌(经典贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之一些比较新但是常用的命令(e
- 下一篇: 给定0~N之间的N个数字(大于等于0,小