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; }
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; }这样吧..
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);
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; }
{
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;
}这样吧..
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);
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};时,不正确谢谢两位!!