已知head为单链表的表头指针,链表中存储的都是整形数据,实现下列运算的递归算法:(1)求链表中的最大值。
(2)求链表中的结点个数。
(3)求所有整数的平均值。
2023/5/30 22:06:11 1KB 链表 head 单链表 指针
1
用Floyd算法求每一对于结点最短路途。
基于C++的类与模板。
2023/5/13 19:14:06 2KB 最短路径问题 C++ 模板
1
算法脑子用队列式分支限界法解此下场。
起首定义一个队列,将起始位置a作为第一个扩展结点。
与该扩展结点相邻并且可达的方格成为可行结点被到场到活扣点队列中,并且将这些方格标志为1,即从肇规矩格a到这些方格的距离为1。
接着,算法从活扣点队列中掏出队首结点作为下一个扩展结点,并将与之后扩展结点相邻且未标志过的方格标志为2,并存入活扣点队列。
这个进程络续络续到算法搜查到目的方格b或者活扣点队列为空时为止。
2023/5/11 22:20:23 38KB 布线问题 算法设计与分析
1
在NTFS文件体系中,每一个文件或者目录都具备一个MFT记实,MFT记实中记实了文件或者目录的底子信息,对于普通文件来说,普通具备文件序号,文件名,建树功夫,文件大小,文件属性,文件数据地址索引等底子文件信息,而一个目录除了具备底子文件信息,还具备其目录下的文件索引项信息,文件与其父目录之间经由该文件的MFT记实中的父目录信息以及目录中的索引项来建树附属关连,这两种信息仅有地未必了文件与父目录之间的对于应关连,由此可知,要在一个指定目录下天生一个文件,除了要建树目的文件自身的MFT记实,还需在其父目录的MFT记实大概其索引调配中建树目的文件的索引。
在NTFS体系中,文件索引是一个比力繁杂的内容,文件的索引付与了树型结构,这给NTFS体系带来了查找文件速率快的短处,但却给当索引结点削减或者削减时,若何掩护树的失调带来了难题。
在NTFS体系中,小目录的索引直接寄存在目录自身MFT记实的90H属性中,而大目录的索引则需另外开拓新的索引调配区来寄存相关的索引。
原法度圭表标准中只思考了小目录的情景,行将文件的索引直接寄存在90H属性中,并不思考大目录的索引情景。
除了此之外,NTFS体系对于每一个文件操作都市写入日志文件中,以便不合性查验,但由于这方面的内容尚未钻研明晰,本法度圭表标准中也未波及这方面的内容。
2023/5/1 0:54:39 424KB ntfs 文件系统 Hexshop
1
用DDraw实现射击游戏阐发文档要点一:画图自动切割IDirectDrawSurface7::BltFast()方式中不自动切割成果,即当画图元素逾越窗口之外时不会自动切割,DDraw遴选自动漠视不画,组成一旦逾越窗口,画图元素会忽然磨灭。
处置这一下场的方式是手动切割,代码如下://自动切割 RECTscRect; //寄存之后窗口大小地域 ZeroMemory(&scRect,sizeof(scRect)); GetWindowRect(GetActiveWindow(),&scRect); //提防图片左上角逾越窗口左上角 if(xscRect.right?scRect.right:x; y=y>scRect.bottom?scRect.bottom:y; m_rect.right=x+m_rect.right-m_rect.left>scRect.right?scRect.right-x+m_rect.left:m_rect.right; m_rect.bottom=y+m_rect.bottom-m_rect.top>scRect.bottom?scRect.bottom-y+m_rect.top:m_rect.bottom;惟独将上述代码加在CGraphic::BltBBuffer()中的m_bRect=m_rect;前就可。
要点二:配景的滚轴实现 画配景能够分为如下三种情景: 情景一:配景图片与窗口等高 情景二:配景图片高度小于窗口高度 情景三:配景图片高度大于窗口高度上述教学图与代码相对于应地看,有助于约莫知道。
另外,要点一实现之后,由于已经能够自动切割,画配景能够用另外方式。
要点三:精灵图的实普通游戏中,如RPG游戏中的人物图、射击类游戏的飞机、爆炸等,叫做精灵图。
精灵图实际上是将齐全帧的图片放在一个文件中,游戏时靠一个RECT来抑制画图像文件中的哪一部份,进而抑制游戏展现哪一帧图,惟独抑制好RECT的位置就可。
如下图:抑制RECT的四个角的坐标的挪动,有如下代码:if(m_timeEnd–m_timeStart>100) //惟独到了100ms之后才画图 {m_ImageID++; if(m_ImageID-m_beginID>=num) { m_ImageID=m_beginID; //末了一帧的下一帧是第一帧 } m_timeStart=timeGetTime(); } intid=m_ImageID++; SetRect(&m_rect,41*id,0,41*(id+1),41); //飞机精灵图大小是41×41 m_pGraph->BltBBuffer(m_pImageBuffer,true,m_Pos.x,m_Pos.y,m_rect);如许就实现为了精敏捷画的下场。
要点四:拿STL举行枪弹的实现枪弹的实现能够使用STL中的vector,当按下开战键时收回一颗枪弹,就往vector中削减一个结点;
当枪弹飞出窗口或者击中敌机时,再将结点从vector中删除了。
每一帧游戏画面中枪弹翱翔时惟独将vector中的齐全枪弹举行处置、绘画就可。
参考代码如下:1.削减枪弹if(g_ctrlDown) //当ctrl键按下时开炮! { m_BulletEnd=m_Gtime->GetTime(); if((m_BulletEnd-m_BulletStart)*1000>120) //假如络续按着开战键不放,这里抑制不会收回太多枪弹 { m_BulletStart=m_BulletEnd; MBULLETtmpBullet; tmpBullet.pos.x=m_SPos.x-1; //记实开战时的枪弹位置 tmpBullet.pos.y=m_SPos.y-26; tmpBullet.speed=5; //该枪弹的翱翔速率 m_BulletList.push_back(tmpBullet); //将枪弹削减到vector中 } } 2.删除了枪弹vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{m_BulletList.erase(itei); //删除了这个枪弹itei=m_BulletList.begin(); //删除了一个结点后,为防止侵蚀下次就重新查验if(m_BulletList.empty()) break; //若删除了结点后枪弹vector已经空则跳出轮回} 3.枪弹遍历处置vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{itei->pos.y-=itei->speed; //枪弹翱翔}要点五:碰撞检测使用WindowsAPI函数RectInRegion:vector::iteratoritei; //vector迭代器for(itei=m_EnimyList.begin();itei!=m_EnimyList.end();itei++) //遍历齐全敌机{HRGNhrgn=::CreateRectRgn(m_player->pos.x,m_player->pos.y,m_player->pos.x+41,m_player->pos.y+41); //患上到飞机Region,图宽41高41 SetRect(&m_rect,itej->getPosition().x,itej->getPosition().y,itej->getPosition().x+50,itej->getPosition().y+50) //患上到敌机rect,敌机宽50高50 if(RectInRegion(hrgn,&m_rect)) //两机相撞 { ……………………. //碰撞之后的种种处置 }}让碰撞愈加准确:使用WindowsAPI函数PtInRegion()以及CreatePolygonRgn(),选取配角飞机的三个关键点的坐标放在POINT数组中,并将其作为参数代入CreatePolygonRgn()中天生HRGN,在枪弹与配角飞机做碰撞检测时惟独分辨枪弹的中间点能否在这个Region中就可(PtInRegion())。
留意:CreateRectRgn()与CreatePolygonRgn()等建树Region的函数会占用体系资源,由于游戏的主渲染函数Render()是络续实施的,如许会组成资源糜掷,于是在用完之后未必要释放:DeleteObject(region)要点六:敌机直线翱翔末了想这个下场的时候,感应很好实现,脑子里马上想到以及了。
其实如许实现有下场,当尽头以及尽头的连线斜率不是1或者-1时就会涌现意想不到的责任了,飞机并无直接飞向尽头,而因此斜率相对于值为1的路途飞已经往,再水平或者垂直飞向尽头。
处置这个下场有多少个方式,其中有一个方式是行使盘算机图形学上的Bresenhem直线算法。
该算法用于盘算机画平面上的直线,算法如下:|m|abs(deltaY))//轨迹斜率0)//1 { if(m_bFirstCalculate) { m_Delta=2*abs(deltaX)-abs(deltaY);//d0=2×dx-dy m_bFirstCalculate=false; } //依据轨迹斜率分辨能否要挪动X坐标 if(m_Delta>0)//m_iTempo)break;}//endofwhile(*pStr)
2023/5/1 0:27:02 2.18MB DDraw
1
硬件平台:STM32F103RBT6此法度圭表标准稍作更正能够用于F103全系列。
成果:双机通讯,经由USB-CAN阐发仪收发就能够调试。
当然,假如你手头有两块STM32的开拓板或者是电路板,也能够试验。
使用KeiluVision4编译就可试验。
留意:我使用的电路板,外面CAN的引脚付与默许的,不是remap的,假如你的开拓板或者是电路板是remap的,先remap后使用。
详尽请参考代码。
(1)烧写主机法度圭表标准,上电后,会在串口打印出信息。
串口配置:115200N81(2)经由CAN阐发仪,毗邻好线,CANH与CANL,而后配置通讯的波特率。
目前为1Mbps36M/(1+2+3)/6=1Mbps(3)经由CAN阐发仪发送指令,假如准确,刚在串口足打印出告成后的信息,并返回同样信息给CAN阐发仪或者是响应的结点。
(4)到场主机付与告成,LED闪灼的法度圭表标准,资料由发送的数据中的第一个字节遴选。
证实已经收到数据并且数据准确的。
如许比力直不雅,并且阐发LED驱动方式的可行性。
2023/4/26 6:33:56 348KB STM32F103 CAN 通讯
1
合肥产业大学数据结构试验五树以及森林搜罗残缺的试验申请、试验预习报告、试验最终报告试验申请:将一棵树(或者森林)转换为二叉树。
求森林的高度。
按条理方式遍历森林。
输入一个森林中每一个结点的值及其对于应的条理数。
输入一个森林的狭义表方式
2023/4/22 14:28:26 564KB 合肥工业大学 数据结构 试验
1
编译原理课程方案中的一个,作为代码优化的一部份实现轮回的查找:依据给定的一段C语言源代码,查找出书面语句,未必底子块,结构法度圭表标准流图,并画出流图,查找必经结点,查找回边以及响应的轮回!在编译课程方案中是最优异的一个!收缩包中搜罗法度圭表标准源代码,可实施的jar文件以及5个示例的C语言源代码,用Eclipse能够直接掀开!
2023/4/22 6:42:41 805KB 编译原理 课程设计 循环查找
1
方案一个哈夫曼编码/译码体系,对于字符串举行编码以及译码底子申请:⚫从文件中读取一篇英文文档(文本文件1),统计文档中各个字符涌现的次数;
⚫以各个字符涌现的次数(或者概率)为叶子结点的权值结构一棵哈夫曼树,并为每一个叶子结点结构哈夫曼编码;
⚫输入每一个叶子结点的哈夫曼编码;
⚫盘算并输入字符的平均编码长度(准确到小数点后两位)。
⚫将该英文文档内容转换成对于应的电文编码,并留存在一个文本文件2中。
⚫将上一步患上到的文件中的电文编码,复原为原有的英文内容,并再留存在一个文本文件3中;
⚫比力文件1以及文件2能否残缺不并吞输入。
2023/4/20 6:58:35 96KB 数据结构 C C++
1
用eclipse情景写的java版迪杰斯特拉算法演示,下场惟独结点文字展现,不详尽的图形,只提供比力约莫的思绪,代码简洁。
2023/4/16 16:58:24 332KB Dijikstra
1
共 145 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡