数据:从A到Z,每个字母对应有若干数量。
A,1234
B,5677
......
Z,11787现在要把A-Z分为N组(N为参数,不定,可为2、3、4),每组合计基本相同(可以有较小的差距),返回每组的字母组成。谢谢

解决方案 »

  1.   

    A-Z才26个,先SUM/N求平均值再对数量排序循环求和就可以了...
      

  2.   

    分组求和
    DataTable dt=new  DataTable();
        IEnumerable<DataRow> query =from t in dt.AsEnumerable()
                                    group t by t.Field<int>("id") 
                                    into s
                                    select new
                                    {
                                        sum=s.Sum(m=>m.Field<int>("age")),
                                        s.Key
                                    };
      

  3.   

    void Main()
    {
    int groupNum=3; //平均分成3组
    var  list=Enumerable.Repeat("A",10);
    list=list.Concat(Enumerable.Repeat("B",20));
    list=list.Concat(Enumerable.Repeat("C",30));
    list=list.Concat(Enumerable.Repeat("D",40));
        list=list.OrderBy(l=>Guid.NewGuid());
        int avgNum=(int)list.Count()/3;
        var result=new List<List<string>>();
    for(int i=0;i<groupNum;i++)
    {
      if(i+1==groupNum)
      {
       result.Add(list.Skip(avgNum*i).ToList());
      }
      else
      {
      result.Add(list.Skip(avgNum*i).Take(avgNum).ToList());
      }
    }
    for(int i=0;i<result.Count;i++)
    {
      Console.WriteLine("第 "+(i+1)+"组: 共计"+result[i].Count+"个");
      result[i].ForEach(r=>Console.WriteLine(r));
      Console.WriteLine("************");
    }

    /*
    第 1组: 共计33个
    C
    A
    B
    D
    C
    C
    B
    C
    A
    C
    D
    C
    B
    D
    C
    C
    C
    A
    D
    B
    C
    D
    D
    C
    B
    C
    D
    D
    C
    D
    B
    C
    D
    ************
    第 2组: 共计33个
    D
    B
    D
    B
    C
    D
    A
    C
    D
    D
    C
    C
    B
    C
    D
    C
    C
    B
    A
    C
    B
    C
    D
    B
    C
    B
    D
    B
    A
    A
    D
    D
    A
    ************
    第 3组: 共计34个
    B
    D
    A
    B
    C
    D
    B
    D
    C
    B
    C
    C
    C
    D
    B
    C
    C
    C
    A
    D
    A
    D
    C
    D
    D
    B
    D
    D
    C
    B
    A
    A
    B
    B
    ************ */
    }