问答题 试题四 阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 在一块电路板的上下两端分别有n个接线柱。根据电路设计,用(i,π(i))表示将上端接线柱i与下端接线柱π(i)相连,称其为该电路板上的第i条连线。如图4-1所示的π(i)排列为{8,7,4,2,5,1,9,3,10,6}。对于任何1≤iπ(j)。 在制作电路板时,要求将这n条连线分布到若干绝缘层上,在同一层上的连线不相交。现在要确定将哪些连线安排在一层上,使得该层上有尽可能多的连线,即确定连线集Nets={(i,π(i)),1≤i≤n}的最大不相交子集。 【分析问题】 记N(i,j)={t|(t,π(t))∈Nets,t≤i,π(t)≤j}。N(i,j)的最大不相交子集为MNS(i,j),size(i,j)=|MNS(i,j)|。 经分析,该问题具有最优子结构性质。对规模为n的电路布线问题,可以构造如下递归式: 【C代码】 下面是算法的C语言实现。 (1)变量说明 size[i][j]:上下端分别有i个和j个接线柱的电路板的第一层最大不相交连接数 pi[i]:π(i),下标从1开始 (2)C程序
问答题 问题:4.1 根据以上说明和C代码,填充C代码中的空(1)~(3)。
【正确答案】(1)size[i][j]=1 (2)size[i][j]=size[i-1][j] (3)net[m++]=i或其等价形式
【答案解析】
问答题 问题:4.2 根据题干说明和以上C代码,算法采用了(4)算法设计策略。函数maxNum和constructSet的时间复杂度分别为(5)和(6)(用O表示)”
【正确答案】(4)动态规划算法 (5)O(n2) (6)O(n)
【答案解析】
问答题 问题:4.3 若连接排列为{8,7,4,2,5,1,9,3,10,6},即如图4-1所示,则最大不相交连接数为(7),包含的连线为(8)(用(i,π(i))的形式给出)。
【正确答案】(7)4 (8)(3,4)(5,5)(7,9)(9,10)
【答案解析】