例:数据库有一条需求,金额为10000元,匹配1个或多个供应者。如有单个供应者正好提供10000元,就匹配单个供应者。如没有就匹配:9000+1000,或8000+2000,或7000+2000+1000。。。。
求最优算法。谢谢!
------解决思路----------------------
如果你是想要的是算法,那么 01背包、动态规划.... 都是不错的选择
但事实上备选的数据极其微小,按某种权重依次累计就可以了。
------解决思路----------------------
金融数据库,
算法要求不是很高,就用递归吧,效率应该不错
先读出数据库,放到C#处理
下面是伪代码
List<int> dbList = GetFromDatabase();
Stack<int> stack;
void SumOfkNumber(int sum, int n)
{
if (n <= 0
------解决思路----------------------
sum <= 0)
return;
if (sum == dbList[n])
{
printStack(stack);
}
stack.push(n);
SumOfkNumber(sum - dbList[n], n - 1); //有dbList[n]的时候
stack.pop();
SumOfkNumber(sum, n - 1);//没有dbList[n-1]的时候
}
------解决思路----------------------
子集和问题
你只要取到一个集合的和为指定数,可用回溯法,10楼背包跟动态规划都可以,你自己按这些提示去找下算法,多的是。