C# 计算最接近给定数字的数字之和
我想找出在C#中实现这一点的最佳方法: 我有一个数组,比如说20个数字,然后还有一个额外的变量。 我想得到最接近给定变量的数字之和。 假设我有1.1,1.5,1.7,1.9,2.2,3.1,3.2,1,5,4.5,4.1。然后,附加变量的值为5。 我想得到数组中最接近给定数字的一些数字的总和,一旦我得到这个数字,就从列表中删除这些数字,并将它们添加到一个新数组中。 欢迎每一条评论。C# 计算最接近给定数字的数字之和,c#,arrays,algorithm,sum,C#,Arrays,Algorithm,Sum,我想找出在C#中实现这一点的最佳方法: 我有一个数组,比如说20个数字,然后还有一个额外的变量。 我想得到最接近给定变量的数字之和。 假设我有1.1,1.5,1.7,1.9,2.2,3.1,3.2,1,5,4.5,4.1。然后,附加变量的值为5。 我想得到数组中最接近给定数字的一些数字的总和,一旦我得到这个数字,就从列表中删除这些数字,并将它们添加到一个新数组中。 欢迎每一条评论。 谢谢您正在为描述优化问题 问题是,所以没有已知的多项式解 然而,由于输入的规模相当小,检查所有子集的指数解决方案是
谢谢您正在为描述优化问题 问题是,所以没有已知的多项式解 然而,由于输入的规模相当小,检查所有子集的指数解决方案是可行的,因为只有2^20~=1000000(实际上稍微多一些,但足够接近估计运行时间) 伪代码应该类似于:
getClosestSum(list,sum,number):
if (list is empty):
return sum
candidate1 <- getClosest(list[1:],sum,number)
candidate2 <- getClosest(list[1:],sum+list[0],number)
if (abs(number-candidate1) < abs(number-candidate2)):
return candidate1
else:
return candidate2
getClosestSum(列表、总和、数字):
如果(列表为空):
回报金额
候选1您正在描述的优化问题
问题是,所以没有已知的多项式解
然而,由于输入的规模相当小,检查所有子集的指数解决方案是可行的,因为只有2^20~=1000000(实际上稍微多一些,但足够接近估计运行时间)
伪代码应该类似于:
getClosestSum(list,sum,number):
if (list is empty):
return sum
candidate1 <- getClosest(list[1:],sum,number)
candidate2 <- getClosest(list[1:],sum+list[0],number)
if (abs(number-candidate1) < abs(number-candidate2)):
return candidate1
else:
return candidate2
getClosestSum(列表、总和、数字):
如果(列表为空):
回报金额
候选人1你如何确定哪个数字接近5?只有一个不同的数字可以最接近另一个。我想它的意思是:1.1+1.5+2.2=4.7哪个数字比4.5更接近5?1.1和4.1?@L.B如果你得到3.1和1.9的和,你会得到正好5。你如何确定哪个是接近5的数字?只有一个不同的数字可以最接近另一个。我想它的意思是:1.1+1.5+2.2=4.7,它比4.5更接近5。你的例子的答案是什么?1.1和4.1?@L.B如果你得到3.1和1.9的总和,你将得到5。