实验10-1

实验5-7 使用函数求1到10的阶乘和 (10 分) 实验5-7 使用函数求1到10的阶乘和 (10 分) 本题要求实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算1!+2!+⋯+10!的值。 函数接口定义: double fact( int n ); 其中n是用户传入的参数,其值不超过10。如果n是非负整数,则该函数必须返回n的阶乘。 裁判测试程序样例: #include <stdio.h> double fact( int... 阅读详情
#include <iostream>
using namespace std;
template <class T>
class minPQ
{
public:
 minPQ();
 ~minPQ();
 bool empty();
 int getsize();
 T top();
 void pop();
 void push1(const T &);
private:
 T* heap;        //数组
 int Hsize;              //数组的容量
 int heapsize;           //元素个数
};
//构造
template <class T>
minPQ<T>::minPQ()
{
 heap = new T[100];
 Hsize = 100;
 heapsize = 0;
}
//析构
template <class T>
minPQ<T>::~minPQ()
{
 delete[] heap;
}
//是否为空
template <class T>
bool minPQ<T>::empty()
{
 return heapsize == 0;
}
//顶部元素
template <class T>
T minPQ<T>::top()
{
 if (heapsize == 0)
 {
  return 0;
 }
 else
  return heap[1];
}
//数组加倍
template <class T>
void changelength(T*& a, int oldl, int newl)
{
 if (newl < 0)
 {
  return;
 }
  T* temp = new T[newl];
  if (oldl >= newl)
   return;
  int num = newl;
  copy(a, a + num, temp);
  delete[] a;
  a = temp;
}
//删除头
template <class T>
void minPQ<T>::pop()
{
 if (heapsize == 0)
 {
  return;
 }
 else
 {
  heap[1] = heap[heapsize];
 // cout << "把堆尾给堆顶" << endl;
 }
 heapsize = heapsize - 1;
 //cout << "堆的大小缩小到" << heapsize << endl;
 T lastE = heap[heapsize+1];
 //cout << "把堆尾" << heap[heapsize+1] << "给lastE" << endl;
 int currentNode = 1;
 int child = 2;
 while (child <= heapsize)
 {
  if (child < heapsize && heap[child] > heap[child + 1])
  {
   child++;
  // cout << "塞到右子树" << endl;
  }
  if (lastE <= heap[child])
  {
  // cout << "都满足则退出了" << endl;
   break;
  }
  heap[currentNode] = heap[child];
  heap[child] = lastE;
  //cout << "交换了" << currentNode << "和" << child << endl;
  currentNode = child;
  child *= 2;
 }
}
//插入
template <class T>
void minPQ<T>::push1(const T & theE)
{
 if (heapsize == Hsize-1)
 {
  changelength(heap, Hsize, 2 * Hsize);
  Hsize *= 2;
 }
 //
 heapsize = heapsize + 1;
 heap[heapsize] = theE;
 //cout << "把元素" << theE << "插入到 " << heapsize << " 中" << endl;
 int currentNode = heapsize;
 while (currentNode != 1 && heap[currentNode / 2] > theE)
 {
 // cout << "满足循环条件" << endl;
  heap[currentNode] = heap[currentNode/2];
  heap[currentNode / 2] = theE;
 // cout << "交换" << currentNode << "和" << currentNode / 2 << endl;
  currentNode = currentNode / 2;
 }
}
int main()
{
 int n;
 cin >> n;
 long long *a = new long long[n];
 for (int i = 0; i < n; i++)
 {
  cin >> a[i];
 }
 //初始化
 minPQ<long long> m;
 for (int i = 0; i < n; i++)
 {
  m.push1(a[i]);
 }
 cout << m.top() << endl;
 cin >> n;      //操作数
 int cho;      //操作
 for (int i = 0; i < n; i++)
 {
  cin >> cho;
  switch (cho) {
  case 1: {
   long long num;
   cin >> num;
   m.push1(num);
   cout << m.top() << endl;
   break;
  }
  case 2: {
   m.pop();
   cout << m.top() << endl;
   break;
  }
  case 3: {
   int nn;
   cin >> nn;
   long long aa;
   minPQ<long long> mm;
   for (int i = 0; i < nn; i++)
   {
    cin >> aa;
    mm.push1(aa);
   }
   for (int i = 0; i < nn; i++)
   {
    cout << mm.top() << " ";
    mm.pop();
   }
  }
  }
 }
}
 

创建 最小堆类。最小堆的存储结构使用 数组。提供操作:插入、删除、初始化。题目第一个操作是建堆操作,接下来是对堆的插入和删除操作,插入和删除都在建好的堆上操作。

格式

输入

第一行一个数n(n<=5000),代表堆的大小。第二行n个数,代表堆的各个元素。

第三行一个数m (m<=1000),代表接下来共m个操作。接下来m行,分别代表各个操作。下面是各个操作的格式:

插入操作:1 num
删除操作:2
排序操作:第一行两个数3和n,3代表是排序操作,n代表待排序的数的数目,接下来一行n个数是待排序数

保证排序操作只出现一次且一定是最后一个操作。

输出

第一行建堆操作输出建好堆后堆顶的元素。

接下来m个操作,若是插入和删除操作,每行输出执行操作后堆顶的元素的值;若是排序操作,输出一行按升序排序好的结果,每个元素间用空格分隔。

[汇编]《汇编语言》第四版实验10-1显示字符串 assume cs:code,ds:data data segment db 'Welcome to masm!',0 data ends code segment start: mov dh,24 mov dl,0 mov cl,2 mov ax,data mov ds, 阅读详情

相关推荐

东北大学OJ-1605: 实验10-1:打印水仙花数、

编写int fun(int x)函数,其功能是判断一个三位数x是否是水仙花数,如果是则返回1,不是返回0。 main函数中调用fun函数找出三位数中的所有水仙花数,并打印输出。说明:所谓“水仙花数”即是指一个三位数,其各位数字的立方和等于该数本身。 主函数如下所示,请只提供子函数的编写: \#include<stdio.h> int fun(int x); int main() { int m,n,i; scanf("%d",&n); for(i=n;i<=999;i++) { m=fu

一起加油 2539

实验10.1 堆的操作

实验10.1 堆的操作

知识库搭建ing 884

北京交通大学-单片机实验-1kHz信号的10分频(UVision4+80/87C52)

当我们想对信号进行任意次(包括奇次和偶次)分频时,改变计数初值即可改变分频系数,注意如果是偶数次分频时,两边分出来都一样,都是n/2;调用定时器1的初始化函数,由于定时器1的初始化只需要进行一次即可,所以将调用初始化函数放在主函数中。4.编译无误后,进行软件仿真,在DEBUG中选择function editor一项进入,将程序代码输入窗口中,然后点击SAVE,保存为.INI的文件。可以看出,输入一个1KHZ的信号,输出信号为100HZ,即单片机实现了对1KHZ的10分频。数格子,看是否完成了分频。

calvin189s的博客 628

数据结构与算法之堆: 堆和实现最小堆类 (Ts, Py, Go版)

这个最小堆在js中的表示形式是:[1,3,6,5,9,8], 数组中对应的各个元素的下标:0,1,2,3,4,5。堆:所有节点都大于等于(最大堆)或小于等于(最小堆)它的子节点。在前端js中表示堆的示例: 这是一个最小堆的结构。如果要找到第k个最小元素,反过来就行,道理一致。给这个最小堆标记下索引(下标),如下。上图括号中的就是在堆中的下标。堆是一种特殊的完全二叉树。

Wang的专栏 563

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统一、对车辆图像进行预处理1.载入车牌图像:function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global FILENAME %定义全局变量 FILENAME = [pathname f...

TuTu998的博客 4万+

华大 HC32F460 DMA数据传输实战:从配置到中断处理的完整指南

本文提供了华大半导体HC32F460微控制器DMA(直接内存访问)功能的完整实战指南。详细解析了DMA的配置流程、中断处理机制以及软件与硬件触发方式,并附有实验代码示例。通过合理使用DMA进行数据传输,可以显著解放CPU资源,提升嵌入式系统的实时性与运行效率。

weixin_29194255的博客 255

Vj数据结构实验10(一)

内容 创建最小堆类。最小堆的存储结构使用数组。提供操作:插入、删除、初始化。题目第一个操作是建堆操作,接下来是对堆的插入和删除操作,插入和删除都在建好的堆上操作。 格式 输入 第一行一个数n(n<=5000),代表堆的大小。第二行n个数,代表堆的各个元素。 第三行一个数m (m<=1000),代表接下来共m个操作。接下来m行,分别代表各个操作。下面是各个操作的格式: 插入操作:1 num 删除操作:2 排序操作:第一行两个数3和n,3代表是排序操作,n代表待排序的数的数目,接下..

weixin_53437436的博客 647

基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理

基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理

watch361的博客 1万+

C++实现最小堆创建,删除与插入

数据结构 最小堆操作

qinziyi061015的博客 344

Windows 10/11系统下TurboDesign 6.4.0完整安装指南(附序列号+破解补丁)

本文提供Windows 10/11系统下TurboDesign 6.4.0的完整安装指南,涵盖系统环境预检、安装程序部署、序列号处理及破解补丁部署等关键步骤。通过详细的安装教程和优化配置,帮助用户高效完成这款涡轮机械设计软件的安装与调试,解决常见兼容性问题。

s4t5u6v的博客 1030

Java utgard连接OPC问题记录

怎么开启是个问题, 是在引入openscada的jar包里的Sever类中修改,这就犯难了, 其实没必要, 只要在自己项目下创建与openscada中Server类相同的路径,并复制Server过去改就行了, 项目会优先使用本地类,像下面这样。奇迹发生了,0x00000005解决. 注: 我的安全补丁编码跟网上查到的并不一样, 所以最初没有删,后来全都删了就好了,这个编码规则咱也不知道.安全日志中记录用户登录行为, OPC通信需要使用Windows系统用户进行登录, 如果用户名密码错误这里会有相关记录.

wangxin1949的博客 2840

数据结构——小顶堆的构建,添加,删除

...

wenge1477的博客 1万+

《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)

《C++面向对象程序设计》✍千处细节、万字总结 文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1 C++的产生和特点2.2 一个简单的C++示例程序2.3 C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符"::"强制类型转换new和delete运算符引用三、类和对象(一)3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数构造函数成员初始化列表

像写诗一样优雅地写代码~ 78万+

实验 10.1

这段汇编代码实现了一个在屏幕指定位置显示彩色字符串的功能。程序首先定义数据段存储字符串“Welcome to masm!&quot”,然后在代码段中调用show_str子程序。该子程序计算屏幕显存地址,将字符串每个字符及其属性(颜色)写入显存,遇到0时结束显示。主要步骤包括:设置显示位置(行8列3)、颜色属性(02h),通过显存地址计算和循环写入实现字符串显示,使用条件判断处理字符串结束符。程序最终通过DOS中断返回。

user_98765的博客 215

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 66

10分钟搞定manim安装与vscode配置

manim安装与vscode配置

帅帅de三叔 3411

实验10-1 圆形体体积计算器

正常模拟即可,有点麻烦便是。

szg175的博客 401

假人有限元模型

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

【花雕学编程】行空板K10系列实验之读取P1引脚的电位器数值并显示在K10屏幕上

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。这段代码实现了通过引脚P1读取电位器的模拟值,并在串口监视器和屏幕上显示这些值。电位器模块是一种常见的电子元件,用于调节电路中的电阻值,从而控制电压和电流。显示从电位器读取的模拟值,字体颜色为蓝色。

雕爷学编程 1023

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

实验7-1-10 组个最小数

【代码】实验7-1-10 组个最小数。

weixin_66307645的博客 302

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[241224] Gemini 2.0 Flash Thinking :增强推理能力的实验性模型 | NetBSD 10.1 发布

- Gemini 2.0 Flash Thinking Mode:增强推理能力的实验性模型 - NetBSD 10.1 发布

edwinjhlee的博客 1424

实验1——10

实验1——10 网络信息收集——whois的使用 whois是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询。早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端

hintll的博客 3698

tensorflow1.10和pytorch1.7.1主流off-policy算法时间消耗对比实验

tensorflow1.10和pytorch1.7.1主流off-policy算法时间消耗对比实验 文章目录tensorflow1.10和pytorch1.7.1主流off-policy算法时间消耗对比实验前言:影响时间消耗的主要因素待测试实验:基本测试环境1. CPU主频3.2GHz,4核2. 深度学习库版本:3. gym环境-FetchPush-v14. 强化算法:Off-policy RL+HER5.训练流程:20epochs=20 * 50cycles=20 * 50 * 50steps实验结果和分

hehedadaq的博客 653

实验5-7 使用函数求1到10的阶乘和 (10分)

实验5-7 使用函数求1到10的阶乘和 (10分) 代码: double fact( int n ) { int i = 1, mul = 1; for (i = 1; i <=n; i++) mul *= i; return mul; }

qq_45970285的博客 467

2021-10-08 操作系统实验1——fork实验

文章目录一、实验目的二、实验要求三、实验过程四、思考 一、实验目的 加深对进程概念的理解,明确进程与程序的区别,并认识并发执行的实质。 二、实验要求 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符,父进程显示“a”;子进程1显示“b”;子进程2显示“c”。多运行几次,观察并分析显示结果。 修改程序,将每个进程输出一个字符改为每个进程输出一句话,观察分析显示结果; 如果在父进程fork之前,输出一句话,这句话后面不加

zheliku的博客 3万+

汇编语言(第四版)【王爽】实验10

实验10_1

星Yeah 的博客 1064

汇编语言 实验10.1

汇编语言 实验10.1。

anbncn1234的博客 372
上一篇: 实验9-2
下一篇: 程序设计 week14 必做题
Hhhhhhhhh毅
博客等级 码龄7年 7粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值