0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈电路布线电路设计

西西 来源:博客园 作者:Jason Damon 2020-08-08 15:33 次阅读

算法设计与分析》 --王晓东

题目描述:

在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,a(i))将上端接线柱与下端接线柱相连,其中a(i)表示上端点i对应的向端点的值。如图所示:

题目要求是在给定的连线中,选取不相交连线的最大子集,即不相交连线的最大数目。并把最大不相交子集的情况给列举处理啊。

解题思路:

首先用a[i]数组表示与上面对应点相连线的下面的点,再用set[i][j]表示上面节点i与下面节点j连线的左边(包括i j连线)的最大不相交连线的个数。

于是就有公式:

max(set[i-1][j], set[i][j-1]); j != a[i]

set(i,j) =

set[i-1][j-1] + 1; j == a[i]

然后就可以对每一个i,都对所以的j求一遍。这样就可以得出结果吗,set[n][n]即我们想要的结果。

最后通过回溯把结果输出出来。

代码实现:

#include 《stdio.h》

#define MAX(a,b) ((a) 》 (b) ? (a) : (b))

void circut(int a[],int set[][11],int n);

void back_track(int i,int j,int set[][11]);

int main()

{

int a[] = {0,8,7,4,2,5,1,9,3,10,6};

int set[11][11];

circut(a,set,10);

printf(“max set: %d \n”,set[10][10]);

back_track(10,10,set);

printf(“\n”);

return 0;

}

void circut(int a[],int set[][11],int n)

{

int i,j;

for (i = 0; i 《 n; i++)

{

set[i][0] = 0;

set[0][i] = 0;

}

for (i = 1; i 《= n; i++)

{

for (j = 1; j 《= n; j++)

{

if (a[i] != j)

set[i][j] = MAX(set[i-1][j],set[i][j-1]);

else

set[i][j] = set[i-1][j-1] + 1;

}

}

}

void back_track(int i,int j,int set[][11])

{

if (i == 0)

return;

if (set[i][j] == set[i-1][j])

back_track(i-1,j,set);

else if (set[i][j] == set[i][j-1])

back_track(i,j-1,set);

else

{

back_track(i-1,j-1,set);

printf(“(%d,%d) ”,i,j);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路板
    +关注

    关注

    140

    文章

    4905

    浏览量

    97396
  • 数组
    +关注

    关注

    1

    文章

    415

    浏览量

    25906
收藏 人收藏

    评论

    相关推荐

    电路设计宝典:浅谈555电路设计

    555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极型(TTL)工艺制作的称为555,用互补金属氧化物(CMOS)工艺制作的称为7555,除单定时器外,还有对应的双定时器556/7556。##几种基本的555电路设计##555电路应用设计
    发表于 08-28 10:58 1.4w次阅读

    FPGA布线开关的电路设计

    FPGA布线开关的电路设计1 研究方法及其条件假定2 导通晶体管布线开关设计 2.1导通晶体管布线开关尺寸优化2.2 导通晶体管存在的问题及其改进3 三态缓冲
    发表于 03-02 09:50

    承接电路设计,pcb布线。价格实惠质量可靠

    现承接电路设计。pcb布线等活。。有意者联系qq416594931.。。价格公道,质量绝对可靠。服务绝对热情。
    发表于 03-03 09:54

    高频电路设计布线技巧

    转帖如果数字逻辑电路的频率达到或者超过45MHZ~50MHZ,而且工作在这个频率之上的电路已经占到了整个电子系统一定的份量(比如说1/3),通常就称为高频电路。高频电路设计是一个非常复
    发表于 11-15 12:09

    高频电路设计布线技巧概述!

    已经占到了整个电子系统一定的份量(比如说1/3),通常就称为高频电路。高频电路设计是一个非常复杂的设计过程,其布线对整个设计至关重要!【第一招】多层板布线高频
    发表于 09-05 03:52

    高频电路设计布线技巧

    高频电路设计布线是关键,分享十个经验!.pdf(90.59 KB)
    发表于 10-12 07:05

    开关电源 PCB电路设计中的接地与布线.pdf

    开关电源 PCB电路设计中的接地与布线.pdf非常适合开关电源设计人员参阅资料来源于网络资源
    发表于 07-31 17:25

    经典资料分享之PCB电路设计中的接地与布线

    非常经典的实用资料PCB电路设计中的接地与布线资料来自网络资源
    发表于 08-20 22:44

    PCB电路设计布线的EMC分析

    PCB电路设计布线的EMC分析,下来看看
    发表于 07-29 19:05 0次下载

    电路板厂布线设计的顺序

    电路板厂印制板进行布线设计的顺序可能不同,在电路板厂布线设计师准备进行设计布线之前,他的电路设计
    发表于 06-04 17:58 2496次阅读

    讲解高速PCB的布线、布局和电路设计

    高速电路设计是一个非常复杂的设计过程,在进行高速电路设计时有多个因素需要加以考虑,这些因素有时互相对立。如高速器件布局时位置靠近,虽可以减少延时,但可能产生串抗和显著的热效应。因此在设计中,需权衡
    发表于 07-10 10:28 6次下载
    讲解高速PCB的<b class='flag-5'>布线</b>、布局和<b class='flag-5'>电路设计</b>

    如何解决高频电路布线

    如果数字逻辑电路的频率达到或者超过45MHZ~50MHZ,而且工作在这个频率之上的电路已经占到了整个电子系统一定的份量(比如说1/3),通常就称为。高频电路设计是一个非常复杂的设计过程,其布线
    发表于 11-02 10:41 0次下载
    如何解决高频<b class='flag-5'>电路</b>的<b class='flag-5'>布线</b>

    高频电路布线技巧分享

    如果数字逻辑电路的频率达到或者超过45MHZ~50MHZ,而且工作在这个频率之上的电路已经占到了整个电子系统一定的份量(比如说1/3),通常就称为高频电路。高频电路设计是一个非常复杂的
    的头像 发表于 07-24 15:23 743次阅读

    电源电路布局布线如何进行

    在进行电路设计时,电源布局布线是一个非常重要的步骤,一个电子硬件主板,如果本身供电就不稳定,又谈何电子主板电路稳定呢? 在实际的电源电路设计中,常常会使用到DCDC电源
    的头像 发表于 11-06 14:46 529次阅读

    高频电路设计布线技巧十项规则【转】

    如果数字逻辑电路的频率达到或者超过45MHZ~50MHZ,而且工作在这个频率之上的电路已经占到了整个电子系统一定的份量(比如说1/3),通常就称为高频电路。高频电路设计是一个非常复杂的
    的头像 发表于 12-11 14:18 652次阅读