一个算法问题。敬请解答(100分)

G

gymmy

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
小弟问各位一个对我来说很复杂的算法问题,非常紧急,愿送上全部分数,望各位鼎力相助。小弟万分感激。问题如下:
现有一个数据结构如下:
ID PART NO NEXT UP ASM LEVEL WEIGHT
1 5478061 00 39.758
2 5478062 5478061 01 38.18
3 5478091 5478062 02 0.12
4 5478064 5478062 02 1.18
5 5478065 5478062 02 6.06
6 5478066 5478065 03 0.19
7 5478067 5478065 03 0.08
8 5478068 5478065 03 3.8
9 5478069 5478065 03 1.99
10 5478070 5478062 02 0.1
11 5478071 5478062 02 4.94
12 5478072 5478071 03 4.92
13 5478073 5478071 03 0.02
14 5478075 5478062 02 7.15
15 5478076 5478062 02 5.12
16 5478077 5478062 02 0.17
17 5478078 5478062 02 7.39
18 5478079 5478078 03 0.48
19 5478080 5478078 03 2.76
20 5480212 5478080 04 2.76
21 5478081 5478078 03 4.15
22 5480213 5478081 04 4.15
23 5478082 5478062 02 1.65
24 5478083 5478062 02 4.3
25 5480214 5478083 03 4.3
26 5478084 5478061 01 0.27
27 5478085 5478061 01 0.27
28 5478086 5478061 01 0.47
29 5478087 5478061 01 0.064
30 5478088 5478061 01 0.504
31 5478089 00 39.728

level 为00的零件由下面的所有01组成,一直到下一个00出现为止,即id 为31的那个00。01的零件由下面的所有02组成,一直到下一个01出现为止,即id 为26的那个01。02的零件由下面的所有03组成,一直到下一个02出现为止,比如id=5的02由id=6---9的03组成,下面的02以此类推。03的零件由下面的所有04组成,一直到下一个03或小于03的出现为止,比如id=19的03由id=20的04组成,id=21的03由id=22的04组成。现在如果我在前台改变了任何一个零件的weight值,就必须按一个button从最底层向上累加。比如id为22的04的weight值改变了,id=21的03需累加改变,03的改变影响到上面的02级,依此类推一直影响到00级。请问各位思路应该怎样?



























 
ExpID PID Name SelfID Ext1 Ext2
0 -1 RelTest 0
1 0 环境应力筛选试验 0
2 0 可靠性增长试验 0
3 0 可靠性鉴定试验 0
4 1 筛选试验-01 0
5 2 增长试验-01 0
6 3 鉴定试验-01 0
8 2 增-02 0
9 1 ESS 0

这是一个树控件的数据库,你参考一下,改动 是devexpress的控件
 
to ugvanxk:
谢谢你的帮助,但我实在看不懂是什么意思,只知道这是树结构,什么叫“改动 是devexpress的控件”
能讲详细一点么?这种结构在数据结构的书里有否提到?还望各位相助。
 
没人知道么?
 
你的这个问题关键是找到已改变记录的上一级,给你一个思路,看管不管用:
本办法是通过递归来实现
procedure askparent(no:string);//no为你你改变的零件的part no
var
nextno:string;
begin
if no的LEVEL=00 then //可以用SQL查询no的level
更新no的weight
else begin
更新no的weight;
nextno:=no的NEXT UP ASM //用SQL查询得到
askparent(nextno);
end;
end;
 
顶部