1. 程式人生 > 實用技巧 >C# winform Panel自定義移動視窗

C# winform Panel自定義移動視窗

部門優化某公司內有4個專案組,專案組A、B、C、D,專案組A現有10人,專案組B現有7人,專案組C現有5人,專案組D現有4人。為了實現跨專案組協作,公司決定每月從人數最多的專案組中抽調3人出來,到其他剩下3組中,每組1人,這稱之為一次調整優化(亦即經過第一次調整後,A組有7人,B組有8人,C組有6人,D組有5人)。那麼請問,經過十年的優化調整後,各專案組各有幾人?程式設計求解該問題,並思考是否為最優解。

/// <summary>
        /// 
        /// </summary>
        /// <param name="a">a部門</param>
        /// <param name="b">b部門</param>
        /// <param name="c">c部門</param>
        /// <param name="d">d部門</param>
        /// <param name="count">調整次數</param>
        public static void MaxPub(int a,int b,int c,int d,int count)
        {
            Dictionary<string, int> keyValues = new Dictionary<string, int>();
            keyValues.Add("a", a);
            keyValues.Add("b", b);
            keyValues.Add("c", c);
            keyValues.Add("d", d);

            for (int i = 0; i < count; i++)
            {
               string max= keyValues.Keys.Select(x => new { x, y = keyValues[x] }).OrderBy(x => x.y).Last().x;

               keyValues[max] = keyValues[max] - 4;
                for (int j = 0; j < keyValues.Keys.Count; j++)
                {
                    var item = keyValues.ElementAt(j);
                    keyValues[item.Key]= item.Value + 1;
                }
            }
        }