【算法设计与分析】动态规划:电路布线

电路布线问题探讨如何在电路板上下两端的接线柱间连接导线,要求导线间不交叉。通过动态规划方法寻找最大不相交子集,递归定义为`size(i,j)`表示前i个接线柱能连接到第j个接线柱的最大不相交导线数。当i=1时,结果取决于j是否大于π(1);当i>1时,通过比较不同情况取最大值。算法时间复杂度为O(n²),来源于《算法基础与实验》一书。" 75045046,6650715,Windows编程初学者指南:创建第一个窗口,"['Windows开发', 'C++', 'API调用', 'GUI编程', '初学者教程']
摘要由CSDN通过智能技术生成

电路布线的问题提出是,在一块电路板的上、下两端分别有n个接线柱,用导线在这里插入图片描述
将上端接线柱与下端接线柱相连,其中在这里插入图片描述
在这里插入图片描述
的一个排列。要求将这n条导线分布到若干绝缘层上,当且仅当两条导线之间无交叉才可以设在同一层。电路布线问题要求确定一个能够布设在同一层的导线集在这里插入图片描述
的最大不相交子集。设在这里插入图片描述

1)写出电路布线问题最优值递归定义。
0, j < π(1)
当i=1时,size(1,j)={
1, j > =π(1)

当i>1时, size(i-1,j),j<π(i) , j <π(i)
Size(I,j)={
Max{size(i-1,j),size(i-1,π(i-1)+1},j>=π(i)

package nine;

public class today {
   
//	static int[] c = {6,8,12,2,1,4,5,3,11,7,10,9,13};
	static int[] c = {
   8,7,4,2,5,1,9,3,10,6};
	static int n = c.length;
	static int[][] size = new int[n+1][n+1];
	static int[] net = new int[n];
	
	public static void main(String[] args) {
   
		mnset(c , size);//计算最优值
		int result = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值