本帖最后由 ywscr0000 于 2012-11-09 14:30:16 编辑

解决方案 »

  1.   


    public List<int> asdsad(double[] array_double)
            {
                double compare = 47.2;//你要对比的值..这个你自己求了..懒得算了
                double temp = 0;      //用来跟对比的值做比较
                int begin = 0;        //默认开始位置长度
                int end = array_double.Length;//默认结束位置长度
                
                for (int i = 0; i < array_double.Length - 1; i++)
                {
                    for (int j = i; j < array_double.Length - 1 - i; j++)
                    {
                        temp = temp + array_double[j];
                        if (temp > compare)
                        {
                            if (j - i < end - begin)
                            {
                                begin = i;
                                end = j;
                            }
                            break;
                        }
                    }
                    temp = 0;
                }
                List<int> list = new List<int>();
                list.Add(begin);
                list.Add(end);
                return list;        }
      

  2.   

          public List<int> asdsad(double[] array_double)
            {
                double compare = array_double.Sum() * 0.7;
                double temp = 0;      //用来跟对比的值做比较
                int begin = 0;        //默认开始位置长度
                int end = array_double.Length;//默认结束位置长度
                
                for (int i = 0; i < array_double.Length - 1; i++)
                {
                    for (int j = i; j < array_double.Length - 1 - i; j++)
                    {
                        temp = temp + array_double[j];
                        if (temp > compare)
                        {
                            if (j - i < end - begin)
                            {
                                begin = i;
                                end = j;
                            }
                            break;
                        }
                    }
                    temp = 0;
                }
                List<int> list = new List<int>();
                list.Add(begin);
                list.Add(end);
                return list;
            }这样吧..
      

  3.   

    double[] a = new double[] { 1, 2, 3, 1, 5, 6, 8, 9, 7, 1, 1, 2, 4, 5, 2, 1, 5, 1, 2 };double maxVal = a.Sum(), cmpVal = a.Sum()*0.7;  //cmpVal数组之和的70%
    int selNum = a.Length; //符合条件的数组元素个数double tmpMaxVal = 0;
    int tmpSelNum = 0;
    int startIndex = 0, endIndex = 0; //startIndex 开始Index, endIndex 结尾Index
    for (int i = 0; i < a.Length; i++)
    {
        tmpMaxVal = 0;
        for (int j = i; j < a.Length; j++)
        {
            tmpMaxVal += a[j];
            if (tmpMaxVal >= cmpVal)
            {
                tmpSelNum = j - i + 1;
                if ((selNum > tmpSelNum) || (selNum == tmpSelNum && tmpMaxVal < maxVal))
                {
                    selNum = tmpSelNum;
                    maxVal = tmpMaxVal;
                    startIndex = i;
                    endIndex = j;
                    break;
                }
            }
        }
    }// 输出结果
    for (int k = startIndex; k <= endIndex; k++)
    {
        Console.Write(a[k].ToString() + " ");
    }
    Console.WriteLine("  Sum:" + maxVal);
      

  4.   

    conan8126 正确
    lyj224170707 不完善,当double[] b=new double[20]{1,2,3,1,5,6,8,9,7,1,1,2,4,1,8,9,9,1,2};时,不正确谢谢两位!!