3-8电路布线

问题描述

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

借用https://blog.csdn.net/LDUtyk大佬的图片
借用https://blog.csdn.net/LDUtyk大佬的图片

如上图所示, 上端 i 节点与下端Ω(i) 节点相连, 但是要求连线不能交叉。Ω(x)是一个无序的排列。
制作电路板时候,会有N个绝缘层。要求将这n条连线分布到若干绝缘层上。在同一层上的连线不相交。
这个问题是要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线(不相交)。

例如
如图,上端节点 i 分别是1到10。下端节点Ω(i)为{8, 7, 4, 2, 5, 1, 9, 3, 10, 6}。
假如在同一绝缘层上端与下端节点相连并且不相交,只能使下端Ω(i)成递增序列。
则下端节点:
8, 9, 10 可在同一绝缘层
7, 9, 10可在同一绝缘层
4,5,9,10可在同一绝缘层
4, 5, 6也可在同一绝缘层
假如不是递增序列, 如
在这里插入图片描述
很明显, 3, 1, 2就不能在同一绝缘层上, 因为会相交。

记N(i,j){(t,a(t)) | t<=i,a(t)<=j }代表上接线柱小于等于i并且下接线柱小于等于j的连线的集合。N(i,j)的最大不相交子集为MNS(i,j),假设MNS(i,j)中的连线数目为dp[i][j];
下面对MNS(i,j)进行判断区分:
题解
(2)当i >1时
①j<a(i)。
此时,(i,a(i))不属于MNS(i,j)。故在这时,MNS(i,j) =MNS(i-1, j),从而dp(i,j)=dp(i-1,j)。
②j >=a(i)。
若(i, a(i))∈MNS(i,j),则对任意(t, a(t))∈MNS(i,j)有t <i且a(t)<a(i);否则,(t,a(t))与(i,a(i))相交。在这种情况下MNS(i,j)-{(i,a(i))}是N(i-1,a(i)-1)的最大不相交子集。否则,子集MNS(i-1,a(i)-1)∪{(i,a(i))}包含于N(i,j)是比MNS(i,j)更大的N(i,j)的不相交子集。这与MNS(i,j)的定义相矛盾。
若(i, a(i))不属于MNS(i,j),则对任意(t, a(t))∈MNS(i,j),有t<i。从而MNS(i,j)包含于N(i-1,j),因此,dp(i,j)≤dp(i-1,j)。另一方面,MNS(i-1,j)包含于N(i,j),故又有dp(i,j)≥dp(i-1,j),从而Size(i,j)=Size(i-1,j)。
(i,a[i])属于MNS(i,j),则dp(i,j)=dp(i-1,a[i])+1;
在这里插入图片描述
用动态规划写
上代码

#include <bits/stdc++.h>using namespace std;int main() {//初始化 int down[11] = {0, 8, 7, 4, 2, 5, 1, 9, 3, 10, 6};int MAX[11][11];//初始化MAX的底 for(int i = 1; i < 11; i ++) {if(i < down[1]) {MAX[1][i] = 0;} else {MAX[1][i] = 1;}}for(int i = 2; i < 11; i ++) {	//遍历上端for(int j = 1; j < 11; j ++) {	//遍历下端if(j < down[i]) {MAX[i][j] = MAX[i - 1][j];} else {int a = MAX[i - 1][down[i] - 1] + 1;int b = MAX[i - 1][j];MAX[i][j] = a > b ? a : b;}}}cout << MAX[10][10] << endl;return 0;
} 

本文图片均来自https://blog.csdn.net/LDUtyk大佬博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255288.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JSP.day01.01JSP学习

JSP基础学习 01.page指令 导入包&#xff0c;指明输入内容类型&#xff0c;控制session等 02.include指令 include指令用于当前JSP中包含其他文件&#xff0c;被包含的文件可以是JSP、HTML或文本文件。 <% include file"文件的相对路径"%>03tagelib指令 t…

51单片机期末课程作业之蓝牙、操控、测速、里程小车

文章底部附源码 课程设计报告 学 科&#xff1a; 单片机原理及应用 项 目&#xff1a; 里程记录仪 学 院&#xff1a; 专业、年级&#xff1a; 指导老师&#xff1a; 摘要 设计首先实现对…

实现微信JS-SDK分享自定义标题和图片

2019独角兽企业重金招聘Python工程师标准>>> 这里先说明下&#xff0c;如果你想要自定义去分享图片的话是需要你去开通微信公众平台的不多也就300&#xff0c;在看之前我希望大家能先去看一下微信官网给出的开发文档(http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0…

微信JSSDK开发,调用微信扫一扫 JAVA jsp前端 js实现

// 微信JSSDK的AccessToken请求URL地址ublic final static String weixin_jssdk_acceToken_url "https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid公众号appid&secret众号appsecret; // 微信JSSDK的ticket请求URL地址 public final…

公众号怎么弄html,微信公众号与HTML 5混合模式揭秘1——如何部署JSSDK

本文是连载J享。发概程间告屏会。一控近到都从述序也问SSDKH5的书&#xff0c;这里是第一篇揭秘————如何部署JSSD支器事的后功发久这含层请间业在屏有随些气和域&#xff0c;实按控幻近持的前时来能过后些的处求也务浏蔽等机站风滚或默现钮制灯近持的前时来K 部署讲过一围多…

如何在微信小程序中调用腾讯地图api

微信小程序的地图api是非常有限的&#xff0c;如果要搜索地图上的位置&#xff0c;比如附近的医院、学校等&#xff0c;就需要使用地图api&#xff0c;使用腾讯地图api的过程如下&#xff1a; 一、开发者申请腾讯地图 进入官网http://lbs.qq.com/key.html 申请密钥 验证完手…

php 微信公众号分享自定义标题,简介,图片

1、必须有认证的公众号 2、设置域名到JS接口安全域名 3、设置IP白名单 4、查看微信JS-SDK说明文档 文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html ** 示例代码&#xff1a;** http://demo.open.weixin.qq.com/jssdk/sample.zip <?php//…

微信公众号支付 jssdk ,后端 laravel + easywechat,前端 uniapp

前提&#xff1a;商户号&#xff0c;各种授权域名 &#xff0c;app_id api_key 证书 等&#xff0c;都已配置好了。 不会配置的参考官方文档&#xff1a; https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_1.shtml 主要流程 前端&#xff1a;用户点购买按钮 前端…

微信公众号基础04_分享和录音功能的实现

本文简单说明一下微信测试号分享和录音功能的调用&#xff0c;其他JSSD功能与这类似 参考&#xff1a;微信JS-SDK文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E8.8E.B7.E5.8F.96.E2.80.9C.E5.88.86.E4.BA.AB.E7.BB.99.E6.9C.8B.E5.8F.8B.E2.8…

【22-23 春学期】AI作业12-LSTM

网络 LSTM&#xff08;输入门、遗忘门、输出门&#xff09; LSTM&#xff08;长短时记忆网络&#xff09;是一种特殊的RNN&#xff08;循环神经网络&#xff09;&#xff0c;能够学习长期的依赖关系。它通过原始 RNN 的隐藏层只有一个状态&#xff0c;它对于短期的输入非常敏感…

强推宝藏网站

最近还是有很强烈的感受&#xff0c;方法大于努力。最近就整理了一下大学期间比较好用的网站&#xff0c;也陪我度过了一段时间了&#xff0c;排名不分先后&#xff0c;把压箱底的东西拿出来了。 ChatGPT WeTab 新标签页https://www.wetab.link/ChatGPT国内免费使用方法有哪些…

AutoCAD三维建模图——汽车车轮

点击前往下载链接 AutoCAD三维建模图——汽车车轮&#xff0c;超真实&#xff0c;带胎路纹理&#xff0c;轮毂钢圈等等 橡胶轮胎建模&#xff0c;钢圈 胎路纹理 轮毂&#xff0c;螺丝&#xff0c;线条 展示图 展示图

CAD轴测图怎么画,才能不踩坑?

CAD轴测图怎么画&#xff1f;相信从事机械设计、产品设计的小伙伴&#xff0c;对于CAD轴测图并不陌生。CAD轴测图凭借立体感强、直观性好等特点&#xff0c;常作为产品设计制图的辅助图样&#xff0c;用来帮助人们读懂正投影视图&#xff0c;展示产品的整体结构特征。那么如何在…

cad超级排孔_家具cad排孔图 爆破排孔图

求一张板式家具CAD图&#xff0c;设计图&#xff0c;下料&#xff0c;排孔&#xff0c;安装图。 此外... 您可以使用正方形软件绘制家具效果图&#xff0c;可以使用3d max&#xff0c;还可以使用AUTO CAD绘制平面图、剖面图、效果图和三维线图。如果想省事&#xff0c;可以弄个…

【CAD3D】0基础绘制立体模型

一、需求 使用autocad软件绘制一个15.6寸裸屏立体模型。 二、操作 2.1建立文件 打开cad软件&#xff0c;点击左上角空白文件图标新建一个文件&#xff0c;会弹出选择样板窗口。选择acad3D.dwt样板&#xff0c;用于绘制3维模型。仅显示名称&#xff0c;不用理会。点击打开后创…

cad怎么表示出一个孔_AutoCAD如何画一个带孔的立体球

原标题:AutoCAD如何画一个带孔的立体球 第一步,在AutoCAD2007中操作菜单“绘图”→“建模”→“球体”,命令行窗口提示“指定中心点或 [三点(3P)/两点(2P)/相切、相切、半径(T)]:”,在模型空间任意位置点击鼠标;命令行窗口接着提示“指定半径或 [直径(D)]:”,键入“50”…

cad快看_CAD三维这样材质贴图,你学会了吗 ?

▲ 点击“CAD教学”,获取海量学习资料和免费教程 CAD画好三维图后,如果想给它贴图上大理石材质大概看一下效果如何,可以这样操作 ▲画好的三维图 1、点击菜单栏的视图——渲染——材质浏览器。 2、弹出的窗口中点击左下角这个+号按钮。 3、如果需要两种材质以上,可以选择新…

如何应用迅捷CAD编辑器,来绘制一份立体图形。

在CAD设计&#xff0c;为了效果的显著性&#xff0c;经常会用到关于CAD立体图形的绘制&#xff0c;立体图形要知道&#xff0c;是运用三维看图才能显示出来的&#xff0c;现在的CAD绘图软件也都有了关于CAD立体三维图形绘制的功能&#xff0c;那具体是怎么运用的呢&#xff1f;…

cad角度怎么画_初学入门CAD,就这样成精了!

经常有朋友问我怎么学习CAD&#xff0c;或者要求学习CAD&#xff0c;所以我觉得有必要把与学习CAD有关的几个问题阐述一下&#xff0c;以帮助想学者和初学者。还有朋友不知道知识兔吗&#xff1f;知识兔就等于学习&#xff0c;公主号超乎想象&#xff0c;学课程&#xff0c;下载…

Python 用turtle画房子

二层小阁楼 最近作业写的小例子,还可以&#xff0c;不算太丑。 效果如下&#xff1a; 代码如下&#xff1a; import turtle as t import time def go(x,y):t.penup()t.goto(x,y)t.pendown()def rangle(h,w):t.left(180)t.forward(h)t.right(90)t.forward(w)t.left(-90)t.fo…