- 博客(236)
- 收藏
- 关注
原创 Unity|Tetris|俄罗斯方块复刻1(C#)
存储了旋转矩阵、各种方块形状的初始位置数据以及墙踢数据,这些数据是方块旋转、初始生成位置确定以及旋转时的墙踢处理等操作的基础,为游戏的逻辑提供了必要的数据支持。:作为俄罗斯方块游戏的核心管理类,负责方块的生成、移动、旋转、碰撞检测、行消除等主要游戏逻辑。Grid为0,Border为最外层的,取一个足够大的数字,这里为3,Tilemap为2。最后一个,也就是在第二层的,也将是一个Tilemap,用以实现幽灵功能,层级为1。Grid为0,Ghost为1,Board为2,Border为3。
2025-01-14 10:47:13 1089
原创 No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置
俄罗斯方块的每种方块都是由四个小方块组成的,很适合放在网格地图中比如网格地图是宽10列,高20行要实现网格的对齐和下落。
2025-01-11 10:41:23 398
原创 No.6十六届蓝桥杯备战|赋值操作符|连续赋值|复合赋值|类型转换|强制|混合|赋值(C++)
在使⽤C/C++写代码的过程中,不同类型的数据进⾏混合计算的时候,或者赋值时等号两边的类型不统⼀的时候,都会发⽣类型转换,这时就需要根据类型的转换规则转换成合适的类型。在C/C++中也会有强制类型转换,根据实际的需要将某⼀数据的数据类型转换为指定的数据类型,强制类型转换是临时转换的,不影响变量本⾝的类型。赋值操作符 = 是⼀个随时可以给变量赋值的操作符,赋值运算符是把右边的值赋值给左边的,这个和数学中的书写习惯是不同的。这样写,在调试的时候,每⼀次赋值的细节都是可以很⽅便的观察的。
2025-01-08 00:06:09 727
原创 No.5十六届蓝桥杯备战|算数操作符|整除|取模|溢出|练习(C++)
上⾯⽰例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是1.5。以 char 类型为例, char 的数值范围在 -128 ~ 127 ,当字符相加超过最⼤值后,打印出来的结。数据类型都有对应的数值范围,⽽在实际运算过程中可能会存在加法操作导致数据范围超过当前数据类型规定的范围。如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时就会进⾏浮点数除法。负数也是⽀持取模的,但是负数求模结果的正负号由第⼀个运算数(操作数)的正负号决定。
2025-01-03 10:47:36 1185
原创 No.4十六届蓝桥杯备战|变量和常量|define|const(C++)
define 常量名 内容int main()return 0;这⾥定义的M、CH、PAI都是常量,可以直接使⽤,但是不能被修改。使⽤#define定义常量的时候是不关注类型的,只关注常量的名字叫啥,常量的值是啥,编译在处理这种常量的时候就是直接替换,在出现常量名字的地⽅,通通替换成常量的内容。C++中还可以使⽤ const 来定义常量,这种常量会有具体的类型。⽐#define定义常量更加严谨。const 类型 常量名字 = 常量值。
2025-01-01 15:51:46 744
原创 No.3十六届蓝桥杯备战|数据类型长度|sizeof|typedef|练习(C++)
sizeof 的计算结果是 size_t 类型的, size_t 指的是⽆符号整数(该类型包含了所有可能的unsigned int , unsigned long , unsigned long long 等类型,具体是取决于编译器的)。其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。
2024-12-30 21:40:50 1080
原创 No.2十六届蓝桥杯备战|练习题4道|数据类型|字符型|整型|浮点型|布尔型|signed|unsigned(C++)
这⾥的n1和n2两个整数,可以分两次读⼊,也可以⼀次读⼊,只有获取到第⼆个输⼊值才能输出结果。cin是⽀持连续读⼊⼏个数值的cout也是支持连续输出⼏个数值的。
2024-12-30 13:12:31 843
原创 各种机器学习问题|监督学习|非监督学习|强化学习
此外,推荐系统有可能形成反馈循环:推荐系统首先会优先推送一个购买量较大(可能被认为更好)的商品,然而目前用户的购买习惯往往是遵循推荐算法,但学习算法并不总是考虑到这一细节,进而更频繁地被推荐。智能体的动作会影响后续的观察,而奖励只与所选的动作相对应。这是因为在一定程度上,许多重要的任务可以清晰地描述为,在给定一组特定的可用数据的情况下,估计未知事物的概率。假设有一组房屋销售数据表格,其中每行对应一个房子,每列对应一个相关的属性,例如房屋的面积、卧室的数量、浴室的数量以及到镇中心的步行距离,等等。
2024-12-29 15:04:40 1073
原创 引言|数据|模型|目标函数|优化算法
当每个样本的特征类别数量都是相同的时候,其特征向量是固定长度的,这个长度被称为数据的维数(dimensionality)。深度学习与经典方法的区别主要在于:前者关注的功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为_深度学习_(deep learning)。在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,这被称之为目标函数(objective function)。仅仅拥有海量的数据是不够的,我们还需要正确的数据。
2024-12-29 12:27:24 513
原创 No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间
在C语⾔中,使⽤单引号括起来⼀个字符,表⽰字符字⾯值,即字符常量,⽐如: ‘1’ , ‘a’,使⽤双引号括起来多个字符表⽰⼀个字符串,⽐如: “abcdef” , “hello world” ,字符串中可以有⼀个或者多个字符,也可以没有任何字符, " " 表⽰空字符串。但是如果这个学校的学⽣分为三个班,分别是1班、2班、3班,把三个张三分别安排在不同的班级,那么⽼师以后喊:1班的张三,那么2班、3班的张三就不会误会了,这是不是就很好的解决了名字冲突的问题。这类字符和字符串表⽰的⽅式在C++也完全⽀持。
2024-12-28 21:39:54 930
原创 图的遍历|深度优先搜索|广度优先搜索(C)
图的基本操作是独立于图的存储结构的。注意到树是一种特殊的图,所以树的遍历实际上也可视为一种特殊的图的遍历。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。图的遍历比树的遍历要复杂得多,因为图的任意一个顶点都可能和其余的顶点相邻接,所以在访问某个顶点后,可能沿着某条路径搜索又回到该顶点。图的遍历是指从图中的某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次,且仅访问一次。为避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点,为此可以设一个辅助数组。
2024-12-17 23:09:43 1100
原创 操作系统简答题
为了读文件,执行一个系统调用,指明文件名称和要读入文件块的内存位置。需要根据用户所给出的文件名去查找目录,找到相应位置,修改读指针写操作:在写文件时,根据文件查找目录找到指定文件的目录项,再利用目录中的写指针进行写操作。多级反馈队列算法集合了时间片轮转调度算法和优先级调度算法的优点,通过动态调整进程优先级和时间片大小,可以兼顾多方面的系统目标。请求分页存储管理是建立在基本分页系统基础上的,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。以你熟悉的文件系统为例,说明如何实现对一个文件的读/写?
2024-12-17 14:40:14 582
原创 操作系统名词解释
由程序段、相关数据段和PCB 三部分构成,进程是进程实体的一次运行,是系统进行资源分配和调度的一个独立单位。从就绪队列中按照一定的算法,选择一个进程,并将处理机分配给它运行,以实现进程并发地执行。是指内存中实际的地址,也称为实地址。物理地址是内存中实际存储单元的唯一标示符。指程序在运行过程中使用的地址,也称为虚拟地址,由CPU生成,用于访问内存。某个进程长时间得不到调度或者某个作业长时间得不到服务。
2024-12-16 22:16:30 825
原创 图的基本概念|存储
图G由顶点集V和边集E组成,记为G=(V,E)其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V={v1v2vnv1v2vn),则用∣V∣|V|∣V∣表示图G中顶点的个数E={uv∣u∈Vv∈Vuv∣u∈Vv∈V),则用∣E∣|E|∣E∣表示图G中边的条数图的顶点集V一定非空,但边集E可以为空,此时图中只有顶点而没有边。有向图。
2024-12-16 14:58:09 1026
原创 六级作文模板
快速/剧烈/明显:great/greatly,significant /significantly, sharp/ sharply, rapid /rapidly, dramatic / dramatically, considerable /considerably, remarkable / remarkably。尤其是近年来,对()的需求增加,这就更需要()。在这样的情况下,()可能会(),产生()的感觉。更具体来说,它从()年的()上升到()年的()。首先,()的快速发展使()必须(),从而()。
2024-12-13 22:23:47 874
原创 二叉树序列相关算法题|先序序列第k节点|满二叉树先序序列转后序序列(C)
但对满二叉树,任意一个节点的左右子树均含有相等的节点数,同时,先序序列的第一个节点作为后序序列的最后一个节点,由此得到将先序序列。假设二叉树采用二叉链存储结构存储,设计一个算法,求先序遍历序列中第k(1
2024-12-12 23:22:44 1004
原创 二叉树交换相关算法题|递归/非递归交换所有节点左右子树(C)
采用递归算法实现交换二叉树的左右子树,首先交换root节点左孩子的左右子树,然后交换root节点右孩子的左右子树,最后交换root节点的左右孩子,当节点为空时递归结束(后序遍历思想)设树B是一棵采用链式结构存储的二叉树,编写一个把树B中所有节点的左右子树进行交换的函数。
2024-12-11 10:25:55 164
原创 二叉树节点相关算法题|双分支节点个数|所有左叶子之和|每一层节点平均值(C)
使用深度优先搜索计算二叉树的层平均值,需要维护两个数组,counts数组用于存储二叉树的每一层的节点数,sums用于存储二叉树的每一层的节点值之和。搜索过程中需要记录当前节点所在层,如果访问到的节点在第i层,则将counts的i的值+1,并将该节点值加到sums的i。假设二叉树采用二叉链表存储结构存储,试设计一个算法,计算一棵给定二叉树的所有双分支节点个数。给定一个非空二叉树的根节点root,以数组的形式返回每一层节点的平均值。遍历结束之后,第i层的平均值即为sums的i除以counts的i。
2024-12-10 23:11:56 796
原创 二叉树祖先相关算法题|单节点所有祖先|最近公共祖先(C)
设一棵二叉树的结点结构为(LLINK,INFO,RLINK),ROOT为指向该二叉树根结点的指针,P和分别为指向该二叉树中任意两个结点的指针,试编写算法ANCESTOR(ROOT,P,a,r),找到p和q的最近公共祖先结点r。采用后序非递归算法,栈中存放二叉树节点的指针,当访问到某节点时,栈中所有元素均为该节点的祖先。先将栈复制到另一个辅助栈中。采用非递归后序遍历,最后访问根节点,访问到值为x的节点时,栈中所有元素均为该节点的祖先,依次出栈打印即可。将5入栈,找到值为x的节点,从栈底开始输出栈内的元素。
2024-12-10 14:24:54 686
原创 完全/满二叉树相关算法题|判断是否为完全/满二叉树(C)
如果一棵二叉树的所有层都被完全填满,除了最后一层(叶子层),并且最后一层的所有节点都尽可能地靠左,那么它就是完全二叉树。采用层次遍历算法,将所有节点加入队列(包括空节点),遇到空节点时,查看其后是否有非空节点。如果当前节点没有孩子或者开始出现子节点为空的情况,则后续所有节点必须为叶子节点,否则返回 false。根据完全二叉树的定义,具有n个节点的完全二叉树与满二叉树中编号从1~n的节点一一对应。一棵二叉树中,每个节点要么没有子节点,要么有两个子节点,并且所有叶子节点都在同一层。判断一棵树是否是满二叉树。
2024-12-09 22:12:51 347
原创 操作系统IO管理磁盘调度相关
假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。
2024-12-09 10:18:36 952
原创 操作系统输入输出系统知识点
假定从磁盘把一块数据输入到缓冲区的时间为T,OS将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理(计算)的时间为C。把在联机情况下外围操作与CPU对数据的处理同时进行的技术称为SPOOLing技术或称为假脱机技术。中断在操作系统中有重要的地位,没有中断,就不可能实现多道程序,进程之间的切换是通过总段来实现的。内核提供了OS的基本功能,而库函数扩展了OS内核,使用户能方便取得操作系统的服务。中断处理程序是I/O系统中最低的一层,是整个I/O系统的基础。I/O系统中各种模块之间的层次视图。
2024-12-08 10:07:23 1048
原创 操作系统文件管理相关习题2
文件管理的任务和功能文件管理任务:对用户文件和系统文件进行组织管理,以方便用户使用,并保证文件的安全功能:文件存储空间的管理,目录管理,文件读写管理和保护。
2024-12-06 21:30:17 1079
原创 操作系统文件管理相关习题
设文件索引节点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,每个地址项大小为4字节。每个文件的目录项中,包含第一个盘块和最后一个盘块号(指针),而在每个盘块中,都有一个指向下一个盘块的指针。当OS为一个大文件分配磁盘空间时,若盘块号装满一个索引l块时,OS便为该文件分配另一个盘块,依次类推,再通过链指针将各索引块链接起来。题目:二级索引,可以有256x256个的盘块号,把盘块号都占满的情况,盘块的数量乘以盘块的大小,就是允许的文件最大长度。
2024-12-05 15:00:17 680
原创 操作系统文件管理知识点
为索引文件再建立一张索引表,从而形成两级索引表,进一步提高了检索效率。最简单的索引顺序文件只使用了一级索引。利用符号链接实现文件共享(软链接)基于有向无循环图实现文件共享。
2024-12-04 22:11:39 1018
原创 操作系统内存分配管理相关习题4
在一请求分布系统中,假如一个作业的页面走向为4、3、2、1、4、3、5、4、 3、2、1、5,当分配给该作业的物理块数为4时(开始时没有装入页面),采用LRU 页面淘汰算法将产生几次缺页中断。页面1访问位也是1,置为0,指向下一个;不命中的概率是10%,访问快表20ns,但是没有找到,找内存中的页表100ns,再访问一次目标单元的主存100ns。访问位都是1,当前页面是2,访问位为1,不能淘汰,将访问为置为0,指针指向下一个。某用户作业有4页,其页号依次为0,1,2,3被分别放在主存块号为2,4,1,6。
2024-12-04 15:07:46 981
原创 操作系统内存分配管理相关习题3
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统部分装入应用程序在运行前,没有必要全部装入(局部性原理),仅将那些当前要运行的页面或段先装入内存便可以运行,其余部分暂留在磁盘上请求调页程序在运行时,如果所要访问的页(段)已调入内存,便可继续执行下去;否则,应利用OS所提供的请求调页(段)功能,将它们调入内存,以便继续运行页面置换。
2024-12-03 22:56:54 846
原创 操作系统内存分配管理相关习题2
用户进程由主程序段,两个字程序段,栈段和数据段组成,可以把这个用户进程分为5段,每段从0开始编址,并分配一段连续的地址空间,段内要求连续,段间不要求连续,因此整个作业是二维的,其逻辑地址由段号S与段内偏移量W两部分组成。若在快表中未找到对应的页表项,则还需访问内存中的页表,找到后,把从页表项中读出的块号送物理地址寄存器;分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或几个段,且对段的保护也十分简单易行。配置段表后,执行中的进程可通过查找段表,找到每段所对应的内存区。
2024-12-02 15:21:17 989
原创 操作系统内存分配管理相关习题
输入井(Input Spool):用于存储待打印的数据。输出井(outputSpool):用于存储打印完成的数据。打印设备:实际执行打印的设备。控制程序:管理打印作业的程序。管程(Monitor)是一种高级同步机制,用于多进程环境下的同步和互斥。条件变量:用于进程间的同步。互斤锁:用于实现临界区的互斥访问。数据结构:共享数据的存储区域。操作过程:一组操作共享数据的函数。
2024-11-30 14:32:34 1209
原创 操作系统存储器相关习题
配置相应的数据结构作为共享段表,在段表项中设置共享进程计数Count,每调用一次该共享段Count值增1,每当进程释放一个共享段时,Count减1,若减为0,则系统回收该共享段的物理内存,取消在共享段表中该段对应的表项;具体实现方法是在系统中增加一个重定位寄存器,用来装入程序在内存中的起始地址,程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加之和,从而实现动态重定位。分页系统的每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应,为此需要建立大量的页表项;
2024-11-29 21:07:51 872
原创 操作系统虚拟存储器知识点|页面置换算法
常规存储管理方式的特征和局部性原理特征一次性作业必须一次性地全部装入内存后才能开始运行导致大作业无法在小内存中运行对内存空间的一种浪费驻留性整个作业一直驻留在内存中占据了大量的内存空间浪费宝贵的内存资源局部性原理时间局部性某条指令被执行,之后可能再次执行程序内存在大量的循环操作空间局部性访问了某个存储单元,附近的存储单元也将被访问地址可能集中在一定范围之内程序的顺序执行虚拟存储器的定义和特征虚拟存储器的定义。
2024-11-29 14:51:28 614
原创 操作系统存储器管理知识点
图中的地址长度为32位,其中0-11位为页内地址,即每页的大小为4KB;在多道程序环境下,要使程序运行,必须先将它装入内存,然后再将其变为一个可以执行的程 序,通常都要经过以下几个步骤:编译、链接和装入。高速缓存:介于寄存器和存储器之间的存储器,用于备份主存种较常用的数据,以减少处理机对主存储器的访问次数,大幅度提高程序执行速度。在存储层次中越往上,存储介质的访问速度越快,价格也越高,相对存储容量也越小。页表的功能可以由一组专门的寄存器来实现。段页式存储爸理下,在一个进程中,段表只有一个,页表可能有多个。
2024-11-26 20:58:22 718
原创 小作文模板
随着 XX 文化的热度不断高涨, 人们对其影响的兴趣日益浓厚, 建议本次活动的主题可以围。我遵循早睡早起的生活习惯, 并注重保持居住环境的整洁。对于我们来说, 应该积极参加体育锻炼/各类活动, 因为他们不仅能增长知识开拓视野, 也。我对这个领域不太熟悉, 而您对此有深刻的理解。我们诚挚地邀请有兴趣的朋友/你参加, 毕竟这对我们所有人来说都是一次难得的机会。绕其展开, 展示其深厚的文化内涵, 体现中国团结一致的理念。听到这个消息,我非常高兴,激动,抱歉,失望…对于我可能造成的任何不便, 我深表歉意。
2024-11-25 15:41:18 889
原创 死锁相关习题2 3道 附详解
若2中的两个请求立即得到满足,则此刻系统并未立即进入死锁状态,因为这时所有的进程未提出新的资源申请,全部进程均未因资源请求没有得到满足而进入阻塞状态。假设具有5个进程的进程集合P={P0,P1,P2,P3,P4},系统中有三类资源A,B,C,假设。某系统有R1,R2和R3共三种资源,在T0时刻P1,P2,P3和P4这四个进程对资源的占用和。可以满足P0和P3的需求,执行完毕后释放资源,Work = 0,6,7。尽可满足P4的需求,P4结束后释放资源,Work = 0,6,8。先执行P2,释放资源。
2024-11-22 14:45:31 837
原创 死锁相关习题 10道 附详解
在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统理能力。然而,多个进程的并发执行也带来了新的问题一死锁。所谓死锁,是指多个进程因竞争某一资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进注意:并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态。
2024-11-22 13:31:14 1045
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人