• 平均分配的实现


    protected void Button2_Click(object sender, EventArgs e)
    {
        List<string> persons = new List<string>();
        Dictionary<string, List<string>> result = new Dictionary<string, List<string>>();
        
        //初始化数据
        string[] itemList = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K" };
        int m = 4; //任务数
        int n = 3; //分配人数
        
        //随机初始化一下
        
        List<string> itemListTemp = new List<string>();
        long tick = DateTime.Now.Ticks;
        Random r = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));//保证生成随机数重复率很低
        
        while (itemListTemp.Count < m)
        {
            int j = r.Next(m);
            string s = itemList[j];
            
            if (itemListTemp.Count > 0)
            {
                while (itemListTemp.Contains(s))
                {
                    j = r.Next(m);
                    s = itemList[j];
                }
            }
            itemListTemp.Add(s);
        }
        
        for (int j = 0; j < n; j++)
        {
            string t = (j + 1).ToString().PadLeft(12, '0');
            
            persons.Add(t);
            result.Add(t, new List<string>());
            
        }
        
        //算法
        
        int iAv = m / n == 0 ? 1 : m / n;
        int iMod = m % n;
        int i = 0;
        
        
        
        foreach (string k in result.Keys)
        {
            if (itemListTemp.Count == 0) break;
            result[k].AddRange(itemListTemp.GetRange(0, iAv));
            
            if (i == result.Keys.Count - 1 && itemListTemp.Count / n < 2)
            {
                result[k].AddRange(itemListTemp.GetRange(iAv, itemListTemp.Count - iAv));
            }
            
            itemListTemp.RemoveRange(0, iAv);
            i++;
            this.ListBox1.Items.Add(k + ":" + result[k].Count + "-->" + String.Join(",", result[k].ToArray()));
            //Console.WriteLine("{0}:{1}-->{2}", k, result[k].Count, String.Join(",", result[k].ToArray()));
        }
        
        ////
        
        
        //int iAverage = m / n;
        //int iMod = m % n;
        
        //foreach (string k in result.Keys)
        //{
        //    //int m = 4; //任务数
        //    //int n = 3; //分配人数
        
        //    result[k].AddRange(itemListTemp.GetRange(0, 1));
        
        //    if ((4 - 1) != 0 && (4 - 1) / n == 0)
        //    {
        
        //    }
        
        //    result[k].AddRange(itemListTemp.GetRange(0, iAverage));
        //    if (itemListTemp.Count - iAverage != 0 && (itemListTemp.Count - iAverage) / n == 0)
        //    {
        //        result[k].AddRange(itemListTemp.GetRange(iAverage, itemListTemp.Count - iAverage));
        
        //    }
        
        
        //    this.ListBox1.Items.Add(k + ":" + result[k].Count + "-->" + String.Join(",", result[k].ToArray()));
        
        //    itemListTemp.RemoveRange(0, iAverage);
        //}
    }
  • 相关阅读:
    Hibernate入门
    oracle数据库应用(2)
    oracle数据库应用
    Oracle数据库基础
    InitBinder 在Controller方法执行之前进行捕获请求,进行类型的转换
    Spring面试题
    Object处理方法的返回值
    使用jQuery快速高效制作网页交互特效
    struts2
    表分区
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/4485629.html
Copyright © 2020-2023  润新知