110,569
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e)
{
List<double> strArr = new List<double> { 328154.50,499633.33,886138.37,1066258.84, 194515.20,16159.67,16159.66,198236.16,
1127236.45,362708.61,135907.91,1129509.10,551282.22,20071.67 };
double NUM = 2754440.06;
for (int i = 0; i < strArr.Count; i++)
{
strArr[i] = strArr[i] * 100;
}
NUM = NUM * 100;
List<double> result = GetNum(strArr, NUM);
for (int i = 0; i < result.Count; i++)
{
result[i] = Math.Round(result[i] / 100, 2);
}
}
private void button1_Click(object sender, EventArgs e)
{
List<double> strArr = new List<double> { 328154.50,499633.33,886138.37,1066258.84, 194515.20,16159.67,16159.66,198236.16,
1127236.45,362708.61,135907.91,1129509.10,551282.22,20071.67 };
double NUM = 2754440.06;
//你给的数据结果为0,数据应该不准确,下面是测试数据
List<double> strArr1 = new List<double> { 1.5, 2.6, 3.7, 4, 9 };
double num1 = 13;
List<double> result = GetNum(strArr1, num1);
}
private List<double> GetNum(List<double> numlist, double num)
{
List<double> dblist = new List<double>();
for (int i = 0; i < numlist.Count; i++)
{
if (numlist[i] == num)
{
dblist.Add(numlist[i]);
return dblist;
}
else if (numlist[i] > num)
{
continue;
}
else if (numlist[i] < num)
{
List<double> newlist = new List<double>();
for (int j = i+1; j < numlist.Count; j++)
{
newlist.Add(numlist[j]);
}
dblist = GetNum(newlist, num - numlist[i]);
if (dblist.Count > 0)
{
dblist.Add(numlist[i]);
return dblist;
}
else
{
continue;
}
}
}
return dblist;
}
测试结果