电路布线问题的动态规划实现(java)

一,问题分析

参考该博主:

电路布线问题_何智鹏的博客-CSDN博客_电路布线问题问题描述:在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)) 将上端接线柱i与下端接线柱π(i)相连,如下图。其中,π(i),1≤ i ≤n,是{1,2,…,n}的一个排列。导线(I, π(i))称为该电路板上的第i条连线。对于任何1 ≤ i ≤ j ≤n,第i条连线和第j条连线相交的充要条件是π(i)> π(j).π(i)={8,7,4,2,5,1,9,3,10,6}在制作电路板时,要求将这n条连线分布到若干绝缘层上。换句话说,**这个问题是要确定将哪些连线https://blog.csdn.net/weixin_44469806/article/details/109555921

列出普通解法的伪代码及时间复杂度的分析

二,代码部分

1,普通方法,较简单

public class circuit_wiring{
    public int  circuit(int[] pai,int n,int max){
        for(int i=0;i<n;i++){
            int count=1;
            int t=pai[i];
            for(int j=i+1;j<n;j++){
                if(pai[j]>t){
                    count++;
                    t=pai[j];
                    if(max<count){
                        max=count;
                    }
                }
            }
        }
        return max;
    }
    public static void main(String[] args) {
        int max=0;
        circuit_wiring mod=new circuit_wiring();
        int[] pai={8,7,4,2,5,1,9,3,10,6};
        System.out.println("对应的接线柱排列为:");
        for(int i=0;i<pai.length;i++){
            System.out.print(pai[i]+" ");
        }
        System.out.println();
        System.out.println("电路布线的最大不相交连线数目为:"+mod.circuit(pai,pai.length,max));
    }
}

2,动态规划方法

参考该博主

动态规划案例-电路布线(含表格填写等超详细,纯人话讲解)_小王在努力的博客-CSDN博客_电路布线动态规划c语言https://blog.csdn.net/vangoudan/article/details/106413539?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-9.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-9.pc_relevant_antiscanv2&utm_relevant_index=15


版权声明:本文为qq_58668057原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。