L.Insert(k[w], w
意思是把w插到从左数第k[w]的后面
【 在 warsong () 的大作中提到: 】
: 跟网上经典“电路布线”问题类似:在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线(i,C(i)),将上端接线柱i与下端接线柱C(i)相连,导线(i,C(i))称为该电路板上的第i条连线。k(i)(1<=i<=n)是线路i与其右边线路(即i<j)的交点的数量。很显然,一个简单的二重循环即可通过C(i)算出k(i),如当C=[8,7,4,2,5,1,9,3,10,6]时,k=[7,6,3,1,2,0,2,0,1,0]。
: 我的问题是:如果通过k(i)反推出C(i)呢?Sartaj Sahni的《数据结构算法与应用--C++语言描述》给出的回答是“for(int w=n;w>0;w--) L.Insert(k[w], w);”其中L是LinearList(简单队列)。答案正确,但并没有给出这个算法的逻辑,而这也是我想知道的。。。
:
:
--
FROM 114.242.248.*