请教一种算法

时间:2020-12-12 17:33:25
请教一种算法 
现在我有一张表bom   mid表示物品编码 ,Cid表示所组成的物品编码,num表示 所需要 Cid物品个数 
(举例现有一支笔A,笔由笔帽,笔心,外壳组成,笔心由,油墨,笔心壳组成)这种组合会随不同物品而变化,产生不同的层级)  
   Mid  Cid   num 
    A    A1     2 
    A    A2     3 
    A    A3     3 
    A2    A3     3 
    A2    A4     3 
    A2    A5     3 
    A4    A5     3 
    A4    A6     3 
 ......... 
表 store 仓库,mid即物品编码  SL表示数量  
Mid    SL 
A       2 
A1      5 
A2      3 
A4      1 
A5      2 
A6      3 
  
 现在要求领10个A,程序大致要这样执行,先去store看A的个数,成品有2个,接下来8个要用子原料来生产,A2=3*8  A3=3*8,然后再看A2 A3各自库存数……这样,可以通过哪种算法去实现?

5 个解决方案

#1


用数据库的查询啊,
查询后汇总啊,
不需要什么复杂的算法.

#2


Function Cal(物品代码c, 需要数量n)
{
    if(物品C的库存 >= n)
    {
        需要准备的物品c数量加n;
        return;
    }
    else
    {
        需要准备的物品c的数量就是库存数量;
        for(遍历生产物品c所需要的所有物品种类k)
        {
            Cal( 生产单件C所需要的物品k的数量 * (n-物品c的库存) );
        }
    }
}

#3


楼的,和我最初想的方法是一样
但是~~
我按这种递归,做出来还是出了问题
问题出在数据库记录集会丢失

#4


"问题出在数据库记录集会丢失"

这不是算法的问题,是你代码的问题,想办法把结果保留下来吧。

#5


这个问题,我发了好多天了
呵呵~~
现在还是自己解决了..
各位,还有什么执行效率高一点的没?
点拨一下~~

#1


用数据库的查询啊,
查询后汇总啊,
不需要什么复杂的算法.

#2


Function Cal(物品代码c, 需要数量n)
{
    if(物品C的库存 >= n)
    {
        需要准备的物品c数量加n;
        return;
    }
    else
    {
        需要准备的物品c的数量就是库存数量;
        for(遍历生产物品c所需要的所有物品种类k)
        {
            Cal( 生产单件C所需要的物品k的数量 * (n-物品c的库存) );
        }
    }
}

#3


楼的,和我最初想的方法是一样
但是~~
我按这种递归,做出来还是出了问题
问题出在数据库记录集会丢失

#4


"问题出在数据库记录集会丢失"

这不是算法的问题,是你代码的问题,想办法把结果保留下来吧。

#5


这个问题,我发了好多天了
呵呵~~
现在还是自己解决了..
各位,还有什么执行效率高一点的没?
点拨一下~~