算法设计与分析-分支限界法习题

news2024/11/15 6:56:17

7-1 布线问题

印刷电路板将布线区域划分成 n×m 个方格阵列,要求确定连接方格阵列中的方格a 点到方格b 的最短布线方案。在布线时,电路只能沿直线布线,为了避免线路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。问线路至少穿过几个方格。下图是一个布线的例子:

输入格式:

第1行输入三个正整数,表示布线区域的尺寸n和m(2≤n,m≤100),以及被封锁的方格数k;接下来k行,每行给出两个整数x和y(1≤x≤n,1≤y≤m),表示被封锁方格的坐标(横坐标在前纵坐标在后,下同),坐标原点在左上角,并设定左上角方格坐标为(1, 1),方格间的间距为1;最后一行输入4个整数,分别为方格a与方格b的坐标。

输出格式:

输出只有1行1个整数,为方格a到方格b的最短布线距离,若无法布线,输出-1。

输入样例:

输出样例:

提示:本题不使用分支限界法,不得分!

思路:

经典BFS/DFS走迷宫问题,注意题目样例 初始方格也算一个1个间距 因此初始化距离时为1即可

AC代码:

7-2 最少翻译

据美国动物分类学家内斯特·迈尔推算,世界上有超过100万种动物,各种动物都有自己的语言,假设动物A可以与动物B进行通信,但它不能与动物C通信,动物C只能与动物B通信,所以动物A、B之间的通信需要动物B来当翻译,问两个动物之间相互通信至少需要多少个翻译。

输入格式:

测试数据中第一行包含两个整数n(2<=n<=1000)、m(1<=m<=50000),其中n代表动物的数量,动物编号从0开始,n个动物编号为0~n-1,m表示可以相互通信动物数,接下来的m行中包含两个数字分别代表两种动物可以相互通信,在接下来包含一个整数k(k <= 20),代表查询的数量,对应每个查询包含两个数字,表示彼此通信的两个动物。

输出格式:

对于每个查询,输出这两个动物彼此通信至少需要多少个翻译,若它们之间无法通过翻译来通信,则输出-1。

输入样例:

输出样例:

提示:本题不使用分支限界法,不得分!

思路:

问题转化为求一个无向图中两点间的最短路径,关于最短路径算法我们可以用dijkstra、floyd、spfa、bellman-ford等等,没了解过的同学可以去了解一下,这里我写了两种方法,以下是AC代码

AC代码:

7-3 拯救安妮

原始森林中有很多危险动物,第1种是金刚(一种体型庞大的猩猩),金刚是一种危险的动物,如果遇到金刚,必死无疑;第2种是野狗,它不会像金刚那么危险,但它会咬人,被野狗咬过两次(不管是否同一只野狗咬的),也会死!

安妮是一个美国的女孩,她不幸迷失于原始森林中。杰克非常担心她,他要到原始森林找她。杰克能否找到一条安全的路径营救出安妮呢?

输入格式:

输入的第1行是单个数字t(0<=t<=20),表示测试用例的数目。

每个测试用例是一个原始森林地图,第一行的整数n(0<n<=30),表示原始森林的行数和列数,接下来n行,每行n个字符,每个字符代表的含义如下:

p表示杰克;a表示安妮;r表示道路;k表示金刚;d表示野狗。

请注意,杰克只能在上、下、左、右4个方向移动。

输出格式:

对于每个测试用例,如果杰克能够安全救出安妮,则在一行中输出“Yes”,否则在一行中输出“No”。

输入样例:

输出样例:

提示:本题不使用分支限界法,不得分!

思路:

同样是BFS走迷宫问题,不同的是注意附带的被野狗咬的次数不能超过2次,我们用一个dist数组记录走到每个位置时被野狗咬的次数即可,然后在扩展时我们遇到野狗特判即可

AC代码:

7-4 饥饿的章鱼 (小数据版本)

作者 J.Liau单位 泉州师范学院

小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置x_0。对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7。因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多20次。贝壳总生长在能被17整除的位置(比如:位置0、17、34、51、……)。小易需要你帮忙计算最少需要使用多少次神秘力量就能吃到贝壳。

输入格式:

输入有多组测试用例,每组用例输入一个初始位置x0,范围在1到1,000,000,000。

输出格式:

对每组用例输出小易最少需要使用神秘力量的次数,如果使用次数使用完还没找到贝壳,则输出-1。

输入样例:

输出样例:

提示:

如果不采用分支限界法,本题不得分!

思路:

BFS迭代 两种情况 开一个哈希表来记录访问的点 用来减少迭代次数

AC代码:

原题来源:网易2017内推笔试编程题-饥饿的小易

注:本题是老师把原题数据改小后发布的,原题数据量很大,BFS迭代若不开哈希表会爆内存。

原题AC代码:

7-5 机器的重量

设某一机器由n个部件组成,部件编号为1~n,每一种部件都可以从m个不同的供应商处购得,供应商编号为1~m。设wij是从供应商j处购得的部件i的重量,cij是相应的价格。对于给定的机器部件重量和机器部件价格,计算总价格不超过d的最小重量机器设计。

输入格式:

第1行输入3个正整数n,m和d(1≤n、m≤20,1≤d≤100)。接下来n行输入wij(每行m个整数,且1≤wij≤10),最后n行输入cij(每行m个整数,且1≤cij≤50)。

输出格式:

输出的第1行包括n个整数,表示每个部件(按1~n的顺序)在对应编号的供应商处购得,第2行为对应的最小重量。

输入样例:

输出样例:

提示:

如果不采用分支限界法,本题不得分!

思路:

dfs深搜,回溯

AC代码:

7-2 马走日

作者 J.Liau单位 泉州师范学院

在m行n列的中国象棋棋盘上,马在左下角处,马走日字,且假设只能往右走(右上或右下),求从起点到右上角处有几种不同的走法、最快走法的步数以及方案。注意,m行n列的棋盘,若左下角坐标是(1, 1),则右上角坐标是(n, m)。

输入格式:

输入有多个用例,每个用例包括1行,各有两个整数m, n(1≤m, n≤20),以输入m=0、n=0结束。

输出格式:

对输入中的每组测试数据,输出2行,第1行1个数字表示从起点(1, 1)到右上角(n, m)处总共不同的走法数;第2行第1个数字输出最快走法的步数;接下来输出最快走法的方案(输出格式见样例),如果存在多个答案输出第1个满足条件结果(为确保答案的唯一性,请按下图的顺序扩展点)。如无法到达终点,只需要输出-1。

输入样例:

输出样例:

提示:

如果不采用分支限界法,本题不得分!

思路:dfs求方案数 ,bfs求最短路径,开一个二维PII存扩展到每个点的前驱用来打印路径,注意题目右上角为(m,n)与输入是相反的,这题找bug找了几个小时~

AC代码:

(没法测了不知道能不能AC)

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

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

相关文章

大数据开发之利剑 -- TDengine

前言 在大数据技术全球爆炸的时代&#xff0c;以及大数据在各行各业的实际应用&#xff0c;大数据的快速发展就像计算机和互联网一样&#xff0c;很可能成为新一轮的技术革命。数据处理、机器学习、AI等新兴技术诞生&#xff0c;会改变数据世界的许多算法和理论基础&#xff0c…

DAY-1 | Java数据结构之链表:删除无头单链表中等于给定值 val 的所有节点

目录 一、题干 &#x1f517;力扣203. 移除链表元素 二、题解 1、思路 2、完整代码 一、题干 &#x1f517;力扣203. 移除链表元素 二、题解 1、思路 题干的意思是&#xff0c;要删除链表中所有指定的元素。最暴力的方法是&#xff0c;依次遍历链表中的各个节点&#x…

Day3 XML方式的Spring应用

全文总结基于XML配置1、学习了bean标签&#xff0c;2、三种配置bean的方式&#xff1a;1、静态工厂&#xff1b;2、实例工厂和3、自定义实现factorybean1 SpringBean 的配置类inin-method 与构造方法不同&#xff0c;构造方法是创建对象的&#xff0c;等对象创建以后使用inin-m…

2023年全国最新消防设施操作员精选真题及答案

百分百题库提供消防设施操作员考试试题、消防设施操作员考试预测题、消防设施操作员考试真题、消防设施操作员证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 1、对外观目测判断,下列哪种情况不应报废?(  ) A、铭牌标志脱落 B、瓶…

pyqt5加载matplotlib图形

matplotlib的图形处理非常强大。今天花了很长时间才将matplotlib图形嵌入到pyqt5中。在这里记录一下&#xff0c;便于以后查寻。有些可能还理解不到位。开始要导入几个模块&#xff1a;from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasFigur…

tomcat下载和配置(简单,详细)

下载 官网&#xff1a;http://tomcat.apache.org/ 找到需要的版本&#xff0c;点击download 在download页面&#xff0c;选择需要下载的。&#xff08;分为压缩版和安装版&#xff0c;我比较推荐压缩版&#xff0c;省事解压缩就好&#xff09; 配置 首先&#xff01;&…

[ 数据结构 ] 集合覆盖问题(贪心算法)

0 集合覆盖问题 假设存在如下表的需要付费的广播台&#xff0c;以及广播台信号可以覆盖的地区。 如何选择最少的广播台&#xff0c;让所有的地区都可以接收到信号 广播台覆盖地区K1北京,上海,天津K2广州,北京,深圳K3成都,上海,杭州K4上海,天津K5杭州,大连 思路分析①:穷举法,…

LeetCode 64 最小路径和 | 解题思路分享

原题链接&#xff1a;64. 最小路径和 题目难度&#xff1a;中等 题目描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 **说明&#xff1a;**每次只能向下或者向右移动一步。 示例 1&…

Apache Spark + 海豚调度:PB 级数据调度挑战,教你如何构建高效离线工作流

2010年&#xff0c;我国进入移动互联网&#xff0c;数据规模成几何式增长。在大数据开源技术领域&#xff0c;以Hadoop为核心的大数据生态系统面对海量数据也不断发展与迭代&#xff0c;大数据处理流程中的各个开源组件&#xff0c;也一起开启了狂飙突进的大数据时代&#xff0…

MyBatis---初入

MyBatis快速入门 文章目录MyBatis快速入门MyBatisMyBatis开发步骤添加MyBatis的坐标创建user数据表编写user实体类编写映射文件UserMapper.xml编写核心文件SqlMapConfig.xml编写测试类MyBatis Mybatis是一个优秀的基于java的持久层框架&#xff0c;它内部封装了jdbc,使开发者只…

疫情放开后,如何保护居家员工的办公安全?

随着疫情的放开&#xff0c;大多数企业的员工因“阳”不得不在家办公。据当前的趋势来看&#xff0c;一线城市的大小企业已经出现高比例的员工感染&#xff0c;不少工作人员或出于安全的考虑选择居家办公。但无论是被迫居家隔离&#xff0c;还是主动远程办公&#xff0c;大多数…

Redis缓存何以一枝独秀?——从百变应用场景与热门面试题中感受下Redis的核心特性与使用注意点

大家好&#xff0c;又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容&#xff0c;将会通过系列专题&#xff0c;讲清楚缓存的方方面面。如果感兴趣&#xff0c;欢迎关注以获取后续更新。 作为《深入理解缓存原理与实战设计》系列专栏&#xff0c;在…

国产高清卫星影像时代来了,打造中国版“谷歌地球”!

随着国家数字化战略转型进程不断加快&#xff0c;卫星遥感影像作为基础数据&#xff0c;应用越来越广泛。目前已经成为资源环境调查、监测、评价和管理等不可或缺的技术手段。 不止于此&#xff0c;在推动行业发展、提高生产力以及节约成本等方面&#xff0c;卫星遥感影像都实…

【半监督医学图像分割 2022 CVPR】S4CVnet 论文翻译

【半监督医学图像分割 2022 CVPR】S4CVnet论文翻译 论文题目&#xff1a;When CNN Meet with ViT: Towards Semi-Supervised Learning for Multi-Class Medical Image Semantic Segmentation 中文题目&#xff1a;当CNN与ViT相遇:面向多类医学图像语义分割的半监督学习 论文链接…

kotlin必备基础一

kotlin 必备基础方法的声明成员方法类方法&#xff08;静态方法&#xff09;单表达式方法局部方法方法高级特性高阶函数函数作为参数函数作为返回值闭包&#xff08;Cloure&#xff09;闭包的特性闭包的好处解构申明匿名方法kotlin 方法字面值方法参数默认参数可变数量参数Lamb…

【机器学习】K近邻算法(K-NearestNeighbors , KNN)详解 + Java代码实现

文章目录一、KNN 基本介绍二、KNN 核心思想三、KNN 算法流程四、KNN 优缺点五、Java 代码实现 KNN六、KNN 改进策略一、KNN 基本介绍 邻近算法&#xff0c;或者说K最邻近&#xff08;KNN&#xff0c;K-NearestNeighbors&#xff09;分类算法是分类方法中最简单的方法之一。所谓…

Cadence PCB仿真使用Allegro PCB SI为分立元件创建统一的模型并赋值方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,配置方法3,总结1,概述 本文简单介绍使用Allegro PCB SI软件配置电压地网络电压的方法。 2,配置方法 第1步:打开待仿真的PCB文件,并确认软件为Allegro PCB SI 如果,打开软件不是Allegro PCB SI则可这样…

[ 数据结构 ] 背包问题(动态规划)

0 背包问题 有一个背包,容量为4磅,现有如下物品 物品重量价格吉他(G)11500音响(S)43000电脑(L)32000 1)要求达到的目标为装入的背包的总价值最大&#xff0c;并且重量不超出 2)要求装入的物品不能重复(01背包) 1 动态规划 动态规划(Dynamic Programming)算法的核心思想是&…

从0到1完成一个Vue后台管理项目(十一、前端分页实现)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

测试分析--精准分析

测试分析的概念 测试分析是建立在对「需求本身」、「用户使用场景」以及对应的「系统架构」和「实现细节」的充分了解的基础上&#xff0c;通过对数据流、状态变化、逻辑时序、功能/性能/兼容性等方面的分析&#xff0c;得出测试点的过程&#xff1b; 在现阶段敏捷开发模式普遍…