电路布线问题

原创 2017年01月03日 15:53:53

题目描述:
做电路板时,将n条连线分布到若干绝缘层上。在同一层的连线不相交。电路布线问题就是要确定将哪些连线安排到第一层上,使该层上有尽可能多的连线。

题目类型:递归、动态规划

题目分析:

1)当i=1时,size(i,j)={0, 当j<p(1)
                      {1, 当j>=p(1)
2)当i>1时,size(i,j)={size(i-1,j), 当j<p(i)
                    {max{size(i-1,j),size(i-1,p(i)-1)+1},当j>=p(i)

代码如下:

1)递归方法:

#include<stdio.h>
#define N 100
int a[N];
int fun(int i,int j)
{
    if(i==0) {
        if(j>=a[i])
            return  1;
        else
            return 0;
    }
    if(j<a[i])
        return fun(i-1,j);
    int m=fun(i-1,a[i]-1)+1;
    int n=fun(i-1,j);
    return m>n?m:n;
}
int main()
{
    int i,j,n;
    scanf("%d",&n);
    for(i=0;i<n;i++) {
        scanf("%d",&a[i]);
    }
    printf("%d\n",fun(n-1,n-1)); 
    return 0;
}

2)动态规划算法:

#include<stdio.h>
#define N 100 
int main()
{
    int i,j,n;
    int a[N],p[N][N];
    scanf("%d",&n);
    for(i=1;i<=n;i++) {//下标从1开始
        scanf("%d",&a[i]);
    }
    for(j=1;j<=n;j++) {
        if(j<a[1])
            p[1][j]=0;
        else
            p[1][j]=1;
    }
    for(i=2;i<=n;i++) {
        for(j=1;j<=n;j++) {
            if(j<a[i])//当j<c[i]的情形  
                p[i][j]=p[i-1][j];
            else
                p[i][j]=p[i-1][j]>p[i-1][a[i]-1]+1 ? p[i-1][j] : p[i-1][a[i]-1]+1;
        }
    }
    printf("%d\n",p[n][n]);
    return 0;
} 

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

算法设计--电路布线问题(分支限界法求解)

电路布线问题--分支限界法求解 一 问题描述: 布线问题:印刷电路板将布线区域划分成n×m个方格阵列,要求确定连接方格阵列中的方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直...
  • wwj_748
  • wwj_748
  • 2013年06月24日 16:36
  • 3355

0017算法笔记——【动态规划】电路布线问题

1、问题描述:       在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)) 将上端接线柱i与下端接线柱π(i)相连,如下图。其中,π(i),1≤ i ≤n,是{1...

算法java实现--动态规划--电路布线问题

电路布线算法的java实现 具体问题描述以及

电路布线问题

电路布线问题    制作电路板时,将n条连线分布到若干绝缘层上。在同一层的连线不相交。电路布线问题就是要确定将哪些连线安排到第一层上,使该层上有尽可能多的连线。   输入一个整数n代表接线柱的...
  • LDUtyk
  • LDUtyk
  • 2017年01月01日 20:31
  • 273

算法3.电路布线和0-1背包问题

(1) 算法设计思路 ① 当i=1,MNS(0j)=nets(0#(j)),如果j ② 当i>1,如果j (2) 算法实现的伪代码 计算最优值的算法functionA(int n, i...
  • wsk1103
  • wsk1103
  • 2016年12月11日 20:48
  • 225

队列的应用—电路布线最优解问题

首先什么是电路布线问题呢?电路布线问题是类似于迷宫的问题,也是一个模拟矩阵,迷宫是每个点有8个方向可以走,但是在电路布线问题中每个点上只有上下左右4个方向可走。因为电路布线不允许对角线上布线,并且电路...
  • ZLhy_
  • ZLhy_
  • 2013年02月05日 20:39
  • 2749

【动态规划】电路布线问题

1、问题描述:       在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)) 将上端接线柱i与下端接线柱π(i)相连,如下图。其中,π(i),1≤ i ≤n,是{1...
  • judyge
  • judyge
  • 2014年12月26日 02:05
  • 505

电路布线问题的几种动态规划算法

在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱i与下端接线柱π(i)相连。 其中,π(i),1...

0017算法笔记——【动态规划】电路布线问题

1、问题描述:       在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)) 将上端接线柱i与下端接线柱π(i)相连,如下图。其中,π(i),1≤ i ≤n,是...

DP动态规划-电路布线问题

动态规划算法基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:电路布线问题
举报原因:
原因补充:

(最多只允许输入30个字)