首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

請提供一算法實現,謝謝

2011-12-25 
請提供一算法實現,謝謝!在出入庫時有兩種記錄:入庫和出庫.入庫有:起號~迄號出庫也有:起號~迄號.現需要對入

請提供一算法實現,謝謝!
在出入庫時有兩種記錄:入庫和出庫.
入庫有     :起號~迄號
出庫也有:起號~迄號.
現需要對入庫和出庫的票據進行合併,即在入庫紀錄中去除出庫的記錄.
有如下情況:
狀況一:
          合併前:
                        日   期         起   號         迄   號
          入           11/1                 1               10
          入           11/2               11               15
          入           11/3               16               20
          合併後:
                  起   號         迄   號         張   數
                      1               10               10
                    11               15                 5
                    16               20                 5
狀況二:
        合併前:
                      日   期         起   號         迄   號
        入           11/1                 1               10
        入           11/2               11               15
        入           11/3               16               20
        出           11/4                 1               10
        合併後:
                    起   號         迄   號         張   數
                      11               15                 5
                      16               20                 5
狀況三:
        合併前:
                      日   期         起   號         迄   號
        入           11/1                 1               10
        入           11/2               11               15


        入           11/3               16               20
        出           11/4                 8               13
      合併後:
                      起   號         迄   號         張   數
                          1                 7                 7
                        14               15                 2
                        16               20                 5
狀況四:
        合併前:
                        日   期         起   號         迄   號
          入           11/1                 1               10
          入           11/2               11               15
          入           11/3               16               20
          出           11/4                 8               17
        合併後:
                        起   號         迄   號         張   數
                            1                 7                 7
                          18               20                 3
狀況五:
                      日   期         起   號         迄   號
          入           11/1                 1               10
          入           11/2               11               15
          入           11/3               16               20
          出           11/4                 8                 9


合併後:
                      起   號         迄   號         張   數
                          1                 7                 7
                        10               10                 1
                        18               20                 3
                        11               15                 5
                        16               20                 5
等等.請提供一算法實現,謝謝!

[解决办法]
能改表结构吗?

日期 号
入 11/1 1
入 11/1 2
入 11/1 3
....
入 11/1 10
出 11/2 1
出 11/2 2
....

表面上看,这增大了数据量,但是插入,更新,还有合并时候的查询,其业务逻辑都是最简单,同时也是最符合实际情况的。我估计你们只是最后合并后的那张类似报表的东西里面需要起迄号,而前面那张流水账的表,并不是必须的(即使UI上用户输入的是起迄号,insert/update也只是个循环)

否则你们的设计虽然能大量节约数据量,但是却可能导致超大量的计算问题,实际性价比应该更低
比如
入 11/1 1 10
出 11/2 10 10
入 11/2 11 15
出 11/3 4 5
出 11/4 1 1
出 11/5 12 13
出 11/6 2 3
......

而且,即使能想出算法来,万一业务逻辑稍有变更,可能又要推翻。

你现有表结构的算法正在思考中...

热点排行