回 帖 发 新 帖 刷新版面

主题:算法题:找死锁

数据库操作经常用到事务,一个表(TB1)在某事务(TA1)中被写操作后,在该事务(TA1)未提交或回滚前,该表(TB1)为被锁状态,其它事务(TA2)如果试图操作被锁定的表(TB1),则只能等原事务(TA1)提交或回滚表(TB1)解锁后才能继续,否则TA2一直等待。如果事务间产生相互等待现象,即称为死锁。
    现在输入各个事务的情况,要求查出是否存在死锁的可能。
    输入:每行代表一个事务,每行中输入若干个有写操作的表名(大小写敏感),表名之间用一个空格隔开,同一行不会出现表名重复。共输入若干行,有若干个事务。
    输出:如果没有死锁的可能输出“OK”,否则输出导致产生死锁的事务,并用中括号标出导致死锁的表。
    如,输入: 
A B C
D E C
B D
D E A
E F
F E
输出:
D E [A]
F [E] 
输入: 
A B C
D E C
B D E 
输出:
OK  

回复列表 (共2个回复)

沙发

自己坐沙发:好久没来这里出题做题了,但最近想到一道算法题,挺有新意的,于是整理后贴出来供大家试试。

板凳

不错

我来回复

您尚未登录,请登录后再回复。点此登录或注册