1 操作系统任务调度问题----来源刘H同学

东华大学oj系统 39 最大乘积 39 最大乘积 作者: Turbo时间限制: 1S章节: 深度优先搜索 问题描述 : 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入说明 : 第一行一个数表示数据组数   每组输入数据共2行:   第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,   第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。 输出说明 : 每组数据输出1行,为最大的乘积。 输入范例 : 1 5 5 1 2 3 4 2 输出范例 : 48 注:难 阅读详情

来源刘H同学

来源刘H同学

来源刘H同学

来源刘H同学

来源刘H同学

目的:设计并实现一个算法Schedule,完成简单的操作系统任务调度问题。

描述:操作系统任务分为系统

任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务序列task(顺序存储),任务数为n。每个task的元素值表示任务的优先级,数值越小,优先级越高。算法scheduler实现如下功能,将task中的任务按照系统任务、用户任务依次存放到队列 system_task和 user_task中(队列中元素的值是任务在顺序表task中对应的下标),并且优先级高的任务排在前面。优先级相同的任务按照在task中的相对顺序入队排列(即task序列中在先的任务排在前面)。

要求:顺序表使用vector或数组,队列使用本学期设计好的顺序队列ADT

参考函数原形:

template<class ElemType>

void Schedule(vector<ElemType> &A, SqQueue<int> &system_task, SqQueue<int> &user_task);

输入说明 :

第一行:任务序列task中各个任务的优先级(任务优先级之间以空格分隔)

输出说明 :

第一行:任务序列task的遍历结果,以","分隔

             格式: (序号,优先级) ...

             空行

第二行:系统任务队列遍历结果,以空格分隔。如系统任务队列为空,输出 none

第三行:用户任务队列遍历结果,以空格分隔。如用户任务队列为空,输出 none

     

输入范例 :

0 30 155 1 80 300 155 170 40 30 99

输出范例 :

(0,0),(1,30),(2,155),(3,1),(4,80),(5,300),(6,155),(7,170),(8,40),(9,30),(10,99)

0 3 1 9 8 
4 10 2 6 7 

#include <iostream>
#include <sstream>
#include<algorithm>
#include <cstring>
#include <vector>
#include <stdio.h>
#include<queue>
using namespace std;
void Schedule(vector<int>task, int system_task[],int user_task[])
{
    int m1 = 0, m2 = 0, temp;
    for (int i = 0; i<task.size(); i++)
    {
        if (task[i] >= 0 && task[i]<50)
            system_task[m1++] = i;
        else if (task[i] >= 50 && task[i] <= 255)
            user_task[m2++] = i;
    }
    system_task[m1] = -1;
    user_task[m2] = -1;
    for (int i = 0; i<m1 - 1; i++)
        for (int j = i + 1; j<m1; j++)
        {
            if (task[system_task[i]]>task[system_task[j]])
            {
                temp = system_task[i];
                system_task[i] = system_task[j];
                system_task[j] = temp;
            }
        }
    for (int i = 0; i<m2 - 1; i++)
        for (int j = i + 1; j<m2; j++)
        {
            if (task[user_task[i]]>task[user_task[j]])
            {
                temp = user_task[i];
                user_task[i] = user_task[j];
                user_task[j] = temp;
            }
        }
    for(int i=0; i<m2-1; i++)
    {
        if (task[user_task[i]]==task[user_task[i+1]]&&user_task[i+1]<user_task[i])
        {
            temp = user_task[i];
            user_task[i] = user_task[i+1];
            user_task[i+1] = temp;
        }
    }
    for(int i=0; i<m1-1; i++)
    {
        if (task[system_task[i]]==task[system_task[i+1]]&&system_task[i+1]<system_task[i])
        {
            temp = system_task[i];
            system_task[i] = system_task[i+1];
            system_task[i+1] = temp;
        }
    }
    if(system_task[0]==-1)
        cout<<"none";
    else
    {
        for (int i = 0; system_task[i] != -1; i++)
            cout << system_task[i] << " ";
    }
    cout<<endl;
    if(user_task[0]==-1)
        cout<<"none";
    else
    {
        for (int i = 0; user_task[i] != -1; i++)
            cout << user_task[i] << " ";
    }
}
int main()
{
    vector<int>A;
    int a[256],b[256];
    int num,len=0;
    string temp;
    getline(cin,temp);
    stringstream input(temp);
    while(input>>num)
    {
        A.push_back(num);
        len++;
    }
    for(int i=0; i<A.size(); i++)
    {
        cout<<'('<<i<<','<<A[i]<<')';
        if(i<A.size()-1)
            cout<<',';
    }
    cout<<endl<<endl;
    Schedule(A,a,b);
}

2023东华大学机试OJ进阶版1-81题 先排序。每次找两个最小的数,把其中一个置为两数之和,并累加这个和值,另一个数置为-1,然后再排序,重复操作,直到只剩下一个数。105。 阅读详情

相关推荐

东华大学2020考研计算机OJ题目解答分享——进阶篇(35)

35 最大值 作者: frankhuhu时间限制: 10S章节: 一维数组 问题描述 : 为了培养明明对数学的热爱,明明的爸爸经常想出一些简单有趣且富有数学思想的游戏给明明玩。有一次,明明的爸爸在纸上写了N个数字,有正整数、负整数和0。明明的爸爸给明明一个范围,他可以选大于等于L1个且小于等于L2个的数字(L1≤L2),且这些数字必须是连续的。但是要求明明选出的数的和最大,这样说明明可能不太明白,...

qq_38344326的博客 831

2023东华大学机试OJ 71-109题

东华大学计算机研究生复试题 71 发牌 题目描述:编制一个模拟发牌的程序。有编号为1,2,3,4四个人,将一付去掉大小怪的扑克按照如下顺序排列梅花c0-c12,方块d0-d12,红桃h0–h12,黑桃s0-s12,然后按照1,2,3,4四个人的顺序发牌,问最后每个人手上的牌有哪些。 思路:每次先输出第一章牌的花色和序号【梅花】】,输出一次就累加4,若数字大于12,则取模,发另一种类型的牌,直到发完13张 #include<stdio.h> //每个人都是隔4次发一张,可以用num表示牌的数字,直

m0_49263811的博客 3066

操作系統恐龍書第十版課後答案CH10

課後

apple_72111807的博客 4046

操作系统对系统任务和用户任务调度问题

/**操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。 其中,系统任务的优先级 = 50且 <= 255。 优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n, task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实 现如下功能,将task[] 中的任务按照系统任务用户任务依次存放到 system_task[] 数组和 user

u013160081的专栏 1352

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7588

单片机笔记十二:华大HC32L136超低功耗设计实战

本文详细介绍了华大HC32L136单片机的超低功耗设计实战,包括深度睡眠模式下仅0.5μA的电流消耗、五种功耗模式的对比与配置、外设使用技巧及硬件级优化方法。通过实际项目案例,展示了如何利用ARM Cortex-M0+内核的HC32L136显著延长电池寿命,适用于智能门锁、额温枪等低功耗设备。

weixin_29189373的博客 391

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(一)

刚参加工作那几年做MCU程序,由于实现的功能和需求都比较简单,外围模块也很少,所以大多数的项目直接就在裸机上写代码。 当时也没有任务和线程的概念,脑子里想的只有单个函数的调度,变量的控制等等。工作时先把流程图画出来,然后按照一定的逻辑把所有的函数都调用起来,最后实现自己的需求。 随着业务的深入,后来发现在某些比较复杂,或者说是外围功能比较多的项目上,如果依然用裸机的单线程来写代码,虽然最终也能...

ba_wang_mao的专栏 692

生物信息学工具链搭建:用conda一键搞定MCScanX所有依赖(Ubuntu20.04实测)

本文详细介绍了在Ubuntu20.04系统上使用conda一键部署MCScanX及其所有依赖的高效方法,解决了传统源码编译安装中的依赖冲突问题。通过conda环境管理工具,研究者可以快速搭建生物信息学工具链,实现基因组共线性分析的高效运行,显著提升研究效率。

backprop5master的博客 247

HNU-2024操作系统实验-Lab6-任务调度

ListLowLevelAdd:本函数用于在两个已存在的节点prev和next之间插入一个新的节点newNode。ListAdd:本函数将新的节点newNode添加到链表的头部,即listObject节点的后面。ListTailAdd:此函数将新的节点newNode添加到链表的尾部,即listObject节点的前面。ListLowLevelDelete:这是一个删除函数,用于删除prevNode和nextNode之间的节点。ListDelete:此函数删除指定的节点node,并将它从链表中移除。

2403_85944944的博客 3709

x265探索与研究(四):如何编码视频?

如何编码视频?           本文介绍x265中的两种编码视频方法,一是采用命令行的方法;二是GUI的方式。   1、命令行的方法   (1)、第一种方式生成*.265格式的视频文件           第一种方式可以生成*.265格式的视频文件,对应的命令为: x265 --input-res 352x288 --fps 30 hall_cif_352x288_300.y

成长Bar的博客专栏 3934

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 441

嵌入式实时操作系统ucos-ii_正点原子【STM32-F407探索者】第六十一章 UCOSII 实验 1-任务调度...

1)资料下载:点击资料即可下载2)对正点原子Linux感兴趣的同学可以加群讨论:9354467413)关注正点原子公众号,获取最新资料更新前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分 3 个章节向大家介 绍 UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍 UCOSII 最基本也是 最重要的应用:任务调度。本章分为如下几个部分: 61.1 UCOSII 简介...

weixin_39843338的博客 794

PLC批量读写优化:C# Modbus TCP多寄存器批量操作(效率提升50%)

效率提升:请求次数减少90%以上,通信耗时降低50%-95%;资源节约:减少网络带宽占用和PLC/上位机CPU负载;稳定性提升:更少的请求意味着更少的通信异常;适配高频采集:满足工业现场100ms/次的高频率数据采集需求。工业落地时需注意:批量操作的核心是地址连续化规划,提前与PLC工程师协同规划寄存器地址,是优化的前提;同时需配合重试、校验机制,确保批量操作的可靠性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1258

1个系统节拍 c语言_正点原子【STM32-F407探索者】第六十一章 UCOSII 实验 1-任务调度...

1)资料下载:点击资料即可下载2)对正点原子Linux感兴趣的同学可以加群讨论:9354467413)关注正点原子公众号,获取最新资料更新前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分 3 个章节向大家介 绍 UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍 UCOSII 最基本也是 最重要的应用:任务调度。本章分为如下几个部分: 61.1 UCOSII 简介...

weixin_42160252的博客 343

社区版 ABAP MCP 能不能读取 SAP S/4HANA 公有云开发对象,我的判断是能试,但不能当成已被 SAP 背书的标准通道

文章摘要:当前存在多个社区项目(如mcp-abap-adt、mcp-abap-abap-adt-api等)通过包装ABAP ADT能力为MCP Server,使AI开发工具能读取ABAP对象。这些项目技术上依赖ADT HTTP API或SAP官方ADT language server,但针对SAP S/4HANA Cloud Public Edition的完整适配仍存在挑战。SAP官方已通过VS Code扩展提供ADT MCP能力,而社区方案在云环境下需遵循ABAP Cloud的严格限制,仅能访问已授权的开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 86

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

51单片机多线程神器:Tiny-51操作系统

给STC89C52RC单片机移植RTX-Tiny操作系统,简单到爆,B格拉满了,好吧?

嵌入式学习记录站点 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【正点原子STM32连载】 第六十一章 UCOSII实验1-任务调度摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

61.1.1 裸机系统和多任务系统的区别在嵌入式设备的开发过程中,我们使用的是两种程序,一是裸机程序,前面所有的实验章节使用的都是使用裸机程序;二是多任务程序,即接下来的三章都是多任务程序。很多人会有疑问用得好好的裸机程序,为什么要用多任务程序呢?裸机程序最大的特点,就是主函数中会有一个大循环,大循环中就会有很多个小任务的实现。任务间是按照顺序进行执行的,换句话来说它们执行等级是一样的,下一个任务想要执行必须等上一个任务执行完成才能进行。这个运行着的大循环我们称之为后台程序。

weixin_55796564的博客 1786

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PC行业初入门者--操作系统、架构与 CPU之间的相互关联

之前作为一名手机和平板的研发人员,主要涉及的就是操作系统,如下图和SOC:具体有苹果手机A系列,高通骁龙系列,联发科天玑,华为的海思麒麟,以及三星的猎户座Exynos而如今转战PC之后发现有很多术语是之前没有接触过的,何为BIOS,EC,ARM,X86,preloader,此笔记仅仅作为PC行业初学者,以及未来想要尝试PC和服务器的同学了解一些基本的知识概念。

PM简读馆的博客 1793

什么是真正的实时操作系统

做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现优快云上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platform team封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新

winder9898的博客 321

30天自制操作系统——第十六天实现多任务(二)

任务休眠 上一篇我们实现的多任务,是为每个任务分配相同的时间。实际情况可能是A任务一直闲着没事干,B任务就一直拼命干活,这种分配显然是不合理的。 那么如何避免这种浪费呢? 我们可以把这样闲着没事干的任务,从tasks里删除,这种做法在多任务里叫作“休眠”(sleep)。当FIFO有数据过来时,我们再将A任务唤醒。(这里大家可以类比线程状态及状态切换,思路是相同的。) 首先来创建task_sleep,mtask.c节选: void task_sleep(struct TASK *task) { int i;

mint1993的专栏 3094

RTOS任务调度实现语音多线程并发处理

本文介绍如何利用RTOS(如FreeRTOS)的任务调度机制,在资源受限的嵌入式设备上实现语音处理的多线程并发。通过优先级划分、抢占式调度与事件驱动通信,确保唤醒检测、语音识别、网络通信等任务高效协作,提升系统实时性与稳定性。

weixin_42466723的博客 307

FreeRTOS实时操作系统(2)

FreeRTOS 任务的挂起与恢复、中断管理(重点讲解)、临界区代码保护、任务调度器的挂起和恢复

boldht的博客 1506

工程搭建教程——CubeMX+STM32F4+FreeRTOS+USART1基础工程搭建

工程搭建教程——CubeMX+STM32F4+FreeRTOS+USART1基础工程搭建前言详细介绍:硬件参考:文件保存方法:一、硬件连接示意二、CubeMX工程设置1、STM32F401基础配置Pinout&ConfigurationClock ConfigurationProject Manager2、生成工程文件夹介绍3、FreeRTOS配置与串口配置FreeRTOS配置串口配置三、Keil代码改写1.无FreeRTOS编写main.c2.使用FreeRTOS任务编写freeRTOS.c3.p

qq_23297513的博客 2572

【STM32H7】第7章 RTX5任务管理

论坛原始地址(持续更新):【安富莱】RTX5内核教程,采用CMSIS-RTOS V2封装层,已经更新发布至第9章 (2021-12-27) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz! 第7章 RTX5任务管理 对于初学者,特别是对于没有RTOS基础的同学来说,了解RTX5的任务管理非常重要,了解任务管理的目的就是让初学者从裸机的,单任务编程过渡到带OS的,多任务编程上来。搞清楚了这点,那么RTX5学习就算入门了。 目录 7.1 初学者重要提示 7.2...

Simon223的博客 2172
上一篇: Java 第一节课作业 数组版本
下一篇: 2 找出从指定结点出发且长度为m的所有简单路径---来源舒姐
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨骅麟(Morgan Young)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值