zoukankan      html  css  js  c++  java
  • 平均分配的实现

    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);
        //}
    }
  • 相关阅读:
    点击对话框非标题栏可以移动对话框
    键盘按键的处理和单字节的判断,不允许输入汉字
    MFC 打开网页
    那些坑爹的python面试题
    jQuery上传插件uploadify
    jQuery插件之我的flexiGrid
    浏览器常见兼容点
    jQuery之右键菜单
    javascript调用函数的几种方法
    JavaScript的匿名函数和闭包【转帖】
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/4485629.html
Copyright © 2011-2022 走看看