【软件设计师真题】下午题第四大题---算法设计

news2024/9/20 9:00:48

系列文章目录

1.【软考之软件设计师】PPT课件
2.【软考之软件设计师】学习笔记
3.【软件设计师真题】下午题第一大题—数据流图设计
4.【软件设计师真题】下午题第二大题—数据库设计
5.【软件设计师真题】下午题第三大题—UML 分析与设计
6.【软件设计师真题】下午题第四大题—算法设计
7.【软件设计师真题】下午题第五大题—面向对象程序设计


常用的算法设计技术主要有迭代法、穷举搜索法、递推法、递归法、回溯法、贪心法、分治法、动态规划法等。递归法、回溯法及贪心法极为重要,要重点掌握。

一、真题一

1、题目

阅读下列说明和 C 代码,回答问题 1~问题 3,将解答写在答题纸的对应栏内。
【说明】
设有 m 台完全相同的机器运行n个独立的任务,运行任务i所需要的时间为t,要求确定一个调度方案,使得完成所有任务所需要的时间最短。
假设任务已经按照其运行时间从大到小排序,算法基于最长运行时间作业优先的策略:按顺序先把每个任务分配到一台机器上,然后将剩余的任务一次放入最先空闲的机器。
【C 代码】
下面是算法的 C 语言实现。
(1)常量和变量说明。
m:机器数。
n:任务数。
t[]:输入数组,长度为n,其中每个元素表示任务的运行时间,下标从0开始。s[][]:二维数组,长度为 mxn,其中元素 s[i][i]表示机器i运行的任务ì的编号,下标从0开始。

d[]:数组,长度为 m,其中元素 d[]表示机器i的运行时间,下标从0开始。
count[]:数组,长度为 m,其中元素 count[i]表示机器i运行的任务数,下标从0开始。
i:循环变量。
j:循环变量。
k:临时变量。
max:完成所有任务的时间。
min:临时变量。
(2)函数 schedule。

void schedule(){
    int i,j,k,max=0;
    for(i=0;i<m;i++){
         d[i]=0;
       for(j=0;j<n;j++){
        s[i][j]=0;
    }
}
for(i=0;i<m;i++){         //分配前m个任务   
   s[i][0]=i;
  (1)
count[i]=1;
}
for((2);i<n;i++){        //分配后n-m个任务
int min=d[0];
k=0:
for (j=1;j<m;j++){      //确定空闲机器
if(min>d[j]){
   min=d[j];
   k=j;                 //机器K空闲
}
}
(3);
count[k]=count[k]+1;
d[k]=d[k]+t[i];
for(i=0;i<m;i++){     //确定完成所有任务所需要的时间
       if((4)){
   max=d[i];
}
     }
     }
}

【问题 1】(8 分)
根据说明和C 代码,填充 C代码中的空(1)-(4)
在这里插入图片描述
【问题 2】(2 分)
根据说明和 C 代码,该问题采用了 (5)算法设计策略,时间复杂度为(6)(用 O符号表示)。
在这里插入图片描述
【问题 3】(5 分)
考虑实例 m=3(编号 0~2),n-7(编号 0~6),各任务的运行时间为{16,14,6,5.4.3.2}。则在机器 0、1和2上运行的任务分别为(7)、(8)和(9)(给出任务编号)。从任务开始运行到完成所需要的时间为(10)。
在这里插入图片描述

2、解析

本题考查算法的设计和分析技术中的贪心算法,
贪心算法是一种不追求最优解,只希望得到较为满意解的方法。贪心算法一般可以快速得到满意的解,因为它省去了为找到最优解要穷尽所有可能而必须耗费的大量时间。贪心算法常以当前情况为基础做出最优选择,而不考虑各种可能的整体情况,所以贪心算法不需要回溯。

【问题1】
根据上述思想和题中的说明,首先将s[][]和d[]数组初始化为0,然后将前m个运行时间最长的任务分给m个机器,空(1)处需要表示此时每个机器运行的时间,即当前已经运行的时间加上此时所运行任务的时间,可以推断空(1)处应填入d[i]=d[i]+t[i]。此后需将剩下的n-m个任务按顺序分配给空闲的机器,故空(2)处将i初始化为以m为起始的任务,即空(2)处应填入i-m。空(3)处根据空闲的机器分配任务,所以需记录第k个空闲机器所运行任务的编号,即空(3)处应填入s[k][0]-ī。空(4)处已经完成了任务的运行,此处需要统计所有机器所运行任务的最长时间,机器i的运行时间为d[i],若有d[i]大于当前的最大时间max,就将当前机器的运行时间d[i]赋给max,即空(4)处应填入Max<d[i]。

【问题2】
根据以上分析,该问题采用了贪心算法的策略,而时间复杂度由算法中的两个嵌套for循环和两个非嵌套 for 循环确定,即为 O(2m*n+2m)。

【问题3】
根据题中算法的思想,将前三个任务分给三个机器,再将接下来的任务分给最先空闲的机器,故可知机器0运行任务 0,机器1运行任务1、5,机器 2运行任务 2、3、4、6,且运行的最长时间为 17。

3、答案

【问题1】
(1)d{i]=d{i]+t[i]。
(2)i=m。
(3)s[k][0]=i.
(4) max < d[i].

【问题 2】
(5)贪心。
(6)O(2m*n+2m).

【问题3】
(7)0.
(8)1、5。
(9)2、3、4、6.
(10)17.

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

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

相关文章

UEFI学习笔记(八):Memory Services

UEFI学习笔记&#xff08;八&#xff09;&#xff1a;Memory Services 一、内存服务概况1、PEI阶段2、DXE阶段&#xff08;系统内存&#xff09;3、SMM阶段 二、HOB概述1、为什么在PEI阶段要引入HOB&#xff1f;2、HOB的类型 三、MEMORY类型四、内存分布1、PEI内存分布2、DXE内…

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升&#xff0c;深成指、创业板指盘中跌逾1%&#xff0c;午后集体拉升翻红。华为产业链午后走强…

一天一道算法题day05

目录 合并两个有序链表 什么是链表&#xff1f; 链表的基本概念&#xff1a; Java 中的链表实现 Java 内置 LinkedList 类&#xff1a; 回到题目 解题思路 代码实现 总结&#xff1a; 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼…

【几维安全-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

设计模式之建造者模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、建造者模式2、建造者模式使用场景3、优点4、缺点5、主要角色6、代码示例&#xff1a;1&#xff09;实现要求2&#xff09;UML图3)实现步骤&#xff1a;1&#xff09;创建一个表示食物条目和食物包装的接口2&#xff09;创建实现Packing接口的实体类3&a…

828华为云征文 | 深入解析华为云X实例保障云上业务安全的关键策略

前言 在云计算快速发展的背景下&#xff0c;安全问题一直是企业上云过程中关注的焦点。随着数据迁移至云端&#xff0c;企业对云计算平台的安全性能提出了更高要求&#xff0c;特别是如何防止数据泄露、网络攻击、以及确保合规性等问题至关重要。华为云作为全球领先的云服务提供…

分类预测|基于哈里斯鹰优化最小二乘支持向量机的数据分类预测Matlab程序HHO-LSSVM多特征输入多类别输出

分类预测|基于哈里斯鹰优化最小二乘支持向量机的数据分类预测Matlab程序HHO-LSSVM多特征输入多类别输出 文章目录 一、基本原理1. 哈里斯鹰优化算法&#xff08;HHO&#xff09;2. 最小二乘支持向量机&#xff08;LSSVM&#xff09;HHO-LSSVM模型流程总结 二、实验结果三、核心…

2024/9/12 408“回头看”之文件元数据和索引节点

文件元数据&#xff1a; 索引节点&#xff1a; 把所有文件元数据放在一起&#xff0c;其中只保存文件名和索引节点号&#xff0c;然后通过索引节点来指向其他信息&#xff1a; 索引节点放在外存。 未采用索引节点&#xff1a;找目录项得一个磁盘块、一个磁盘块的找&#xff…

通用四期ARM架构银河麒麟桌面操作系统V10【安装、配置FTP客户端】

一、操作环境 服务端&#xff1a;银河麒麟桌面操作系统V10SP1 客户端&#xff1a;银河麒麟桌面操作系统V10SP1 二、服务端配置 注&#xff1a;以下命令均在终端执行 鼠标点击桌面右键&#xff0c;选择打开终端 操作步骤&#xff1a; 1、安装vsftpd软件&#xff1a;如果提…

【运维监控】Prometheus+grafana+kafka_exporter监控kafka运行情况

本示例通过kafka_exporter收集kafka的监控指标&#xff0c;然后将数据收集到prometheus中&#xff0c;最后通过grafana的dashboard导入模板进行可视化。本示例分为四个部分&#xff0c;即prometheus、grafana部署、kafka_exporter部署与配置和最后的集成。说明&#xff1a;本示…

智科python毕业设计方向汇总

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 深度学习社…

12、xinference部署与自定义模型

1、环境创建 创建虚拟环境 conda create --name xinference python3.10.9激活虚拟环境 conda activate xinference2、安装文件 官网&#xff1a;https://inference.readthedocs.io/zh-cn/latest/getting_started/installation.html pip install "xinference[transfor…

DM数据库报错集合

DM数据库报错集合 DMHS安装部署报错 Oracle端的报错 启动dmhs时失败并报错 解决方法&#xff1a;这里就是没有密钥key&#xff0c;需要拥有DM数据库对应的key&#xff0c;然后将其命名为dmhs.key&#xff0c;并放在dmhs安装路径的bin目录下&#xff0c;就可直接运行 Orac…

经典任务损失函数与评价指标

损失函数_Lcm_Tech的博客-CSDN博客 1. 回归任务损失函数&#xff08;MAE、MSE&#xff09; 【损失函数】MSE, MAE, Huber loss详解_mse损失函数-CSDN博客 【回归损失函数】L1&#xff08;MAE&#xff09;、L2&#xff08;MSE&#xff09;、Smooth L1 Loss详解_mae损失函数-CS…

Qt连接mysql数据库---kalrry

Qt连接mysql数据库---kalrry 前言解决方法1解决方法2 前言 Qt自带SQLite数据库驱动很好用&#xff0c;但如果甲方要求必须使用MySql&#xff0c;那么坑就来了(本教程在Qt5版本下测试成功&#xff0c;Qt6需要自行尝试) 以下是记录解决Qt连接mysql的驱动问题 解决方法1 使用my…

企业需要多少六西格玛绿带?

在探讨企业的六西格玛绿带专业人员需求时&#xff0c;我们需要理解这个术语的背景和含义。六西格玛是一种质量改进方法&#xff0c;通过数据驱动的方法来解决过程问题和提高效率。六西格玛绿带是一种专业技能的认证&#xff0c;代表了对于六西格玛方法的深入理解和实践经验。 在…

超声波清洗机洗眼镜效果好吗?超声波清洗机洗眼镜推荐

眼镜是我们日常生活中不可或缺的伙伴。然而&#xff0c;在长时间使用之后&#xff0c;眼镜上往往会沾染各种污垢&#xff0c;这些污渍不仅影响视觉效果&#xff0c;还可能引起眼部不适。因此&#xff0c;清洁眼镜显得尤为重要。幸运的是&#xff0c;有了超声波清洗机这一工具&a…

春招审核新策略:Spring Boot系统实现

3系统分析 3.1可行性分析 通过对本大学生入学审核系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本大学生入学审核系统采用Spring Boot框架&#xff0c;JA…

树形结构-数据结构

一、基本知识 树&#xff1a;一对多的树形结构顶层的结点&#xff1a;称为根节点叶子结点&#xff08;终端结点&#xff09;&#xff1a;最外围的结点&#xff0c;只有前驱结点&#xff0c;没有后继结点的结点&#xff0c;其结点的度是0分支结点&#xff1a;分支点是描述数据结…

金山在线文档编辑器

官方文档地址&#xff1a;快速开始-WebOffice 知识库 首先按照文档写的方式将包引入项目了 util.js import WebOfficeSDK from "../../public/JSEditor/open-jssdk-v0.0.13.umd" export function WordSDK(url, isEdit, mountDom, isShowTopArea, isShowHeader) {c…