当前位置: 代码迷 >> C# >> C#NET 关于金额多对一婚配的算法
  详细解决方案

C#NET 关于金额多对一婚配的算法

热度:274   发布时间:2016-04-28 08:39:19.0
C#.NET 关于金额多对一匹配的算法
例:数据库有一条需求,金额为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楼背包跟动态规划都可以,你自己按这些提示去找下算法,多的是。
  相关解决方案