已经知BinaryTree二叉树类付与二叉链表存储结构,削减如下成员方式,public权限。
以先根以及中根序列结构二叉树,交流齐全与pattern匹配的子树为bitree。
成员方式申明如下:BinaryTree(Tprelist[],Tinlist[])//以先根以及中根序列结构二叉树voidreplaceAll(BinaryTreepattern,BinaryTreebitree)//交流齐全与pattern匹配子树
2023/5/1 12:26:31 191KB 数据结构
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
红黑树的详尽描摹,从数据结构到建树,最小值,最大值,后继,遍历,插入以及删除了。
该代码是clionIDE中实现的,代码部份在main.c中。
2023/4/30 0:25:41 199KB 红黑 Red Black Tree
1
尺度的深度优先搜查算法,可实现节点遍历、暴发随机路由、检测图中能否有回路等成果,-Standarddepth-firstsearchalgorithm,thenodetraversalcanbeachieved,resultinginarandomrouting,testingwhetherthereisanyloopdiagramfunctions
1
合肥产业大学数据结构试验五树以及森林搜罗残缺的试验申请、试验预习报告、试验最终报告试验申请:将一棵树(或者森林)转换为二叉树。
求森林的高度。
按条理方式遍历森林。
输入一个森林中每一个结点的值及其对于应的条理数。
输入一个森林的狭义表方式
2023/4/22 14:28:26 564KB 合肥工业大学 数据结构 试验
1
//患上到纵情一个元素的纵情一个属性的之后的值---之后属性的位置值functiongetStyle(element,attr){returnwindow.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr]||0;}//动画函数obj---要实施为画的货物json---要实施到的目的的参数货物fn为实施实现后的回调函数(能够再次挪用此方式依据上面格式传参--秩序实施多个动画)//挪用例://zIndex:1000//透明度opacity:数字尺度----小数---放大100倍//my$("btn1").onclick=function(){//varjson1={"width":400,"height":500,"left":500,"top":80,"opacity":0.2};//animate(my$("dv"),json1,function(){//varjson2={"width":40,"height":50,"left":0,"top":0,"opacity":1,"zIndex":1000}//animate(my$("dv"),json2,function(){依据此格式频频重复削减动画将会秩序实施});//});//};functionanimate(element,json,fn){clearInterval(element.timeId);//收拾按时器//按时器,返回的是按时器的idelement.timeId=setInterval(function(){varflag=true;//默许,假如,部份抵达目的//遍历json货物中的每一个属性另有属性对于应的目的值for(varattrinjson){//分辨这个属性attr中能否opacityif(attr=="opacity"){//患上到元素的之后的透明度,之后的透明度放大100倍varcurrent=getStyle(element,attr)*100;//目的的透明度放大100倍vartarget=json[attr]*100;varstep=(target-current)/10;step=step>0?Math.ceil(step):Math.floor(step);current+=step;//挪动后的值element.style[attr]=current/100;}elseif(attr=="zIndex"){//分辨这个属性attr中能否zIndex//层级窜改便是直接窜改这个属性的值element.style[attr]=json[attr];}else{//普通的属性//患上到元素这个属性的之后的值varcurrent=parseInt(getStyle(element,attr));//之后的属性对于应的目的值vartarget=json[attr];//挪动的步数varstep=(target-current)/10;step=step>0?Math.ceil(step):Math.floor(step);current+=step;//挪动后的值element.style[attr]=current+"px";}//能否抵达目的if(current!=target){flag=false;}}i
2023/4/22 10:14:06 3KB web animate
1
////linux只应承单进程具备一个按时器,于是在linux下的单进程中要使用多个按时器,则需要自己掩护管理////这个实现应承用户使用多个自定义的按时器,每一个自定义的按时器将周期地被触发直到其被删除了。
实现的首要思绪是:////i)起首在初始化多按时器(init_mul_timer)时行使setitimer注册一个底子的功夫单元(如1s)的定大势情;
////ii)用户需要set_a_timer注册自定义按时器时,在timer_manage管理结构中记实这个按时器的回调函数以及按时周期等参数;
////iii)当底子的功夫单元到期后(如SIGALRM信号抵达时),遍历全部timer_manage,假如有自定义按时器的超时功夫到了,//就把该回调函数削减到线程池的责任中,让线程池外面的线程去实施,而后将自定义按时器的超时功夫置为末了值0;
////iv)用户经由del_a_timer来删除了某个按时器,经由destroy_mul_timer来删除了全部多按时器。
2023/4/21 0:22:27 5KB linux 定时器 线程池
1
本资源为图临接链表结构及罕用算法python实现。
搜罗深度优先遍历算法,Dijkstra算法。

前期络续更新
2023/4/20 16:32:50 3KB Dijkst python
1
在中国安防产业中视频监控作为最弥留的信息患上到本领之一,能对于目的实用的提取是弥留而底子的下场,于是本文在此配景下,缭绕对于监控视频的前景目的实用的提取下场,钻研了对于1)动态配景、动态配景的前景目的提取,能在配景繁杂化的前提下,将行为的目的;
2)带发抖视频;
3)动态配景下多摄像头对于多目的提取;
4)涌现颇为责任视频的分辨等下场。
给出了在不合情景下的前景目的提取方案。
下场一是针对于动态配景且摄像头平稳的情景下,若何对于前景目的提取的下场。
在题目申请的底子上,经由对于附件2中多少组视频的阐发,咱们发现齐全前景目的的行为临时且光线明暗变更不明晰。
由于传统的Vibe算法能抑制鬼影然则运行下场不梦想,于是付与建树在帧差法上改善的Vibe算法模子求解下场。
并以及传统的Vibe算法做比力,下场展现改善的Vibe算法明晰优于传统的算法。
并且对于咱们的算法模子做了下场评估。
详尽数据参考评释与附录。
下场二是在配景为动态(若有水波的暴发)的情景下,对于前景目的的提取下场。
在此下场中,由于动态配景存在使患上提掏出的图像帧具备大宗的干扰噪声,对于前景目的的识别以及提取组成干扰,于是咱们提出一种基于全局外表不合型的行为目的检测法。
在用Vibe算法对于场景预检测的底子上,建树稠浊高斯模子分别对于前景以及配景举行全局外表建模,将行为目的检测进去,再引入超像素去噪,进一步优化下场。
详尽下场参考评释与附录。
下场三是在下场一、二底子上的进一步深入。
下场一及下场二是建树在摄像机自身平稳的底子上,而下场三则是在摄像机发抖的情景下。
由于摄像机发抖普通具备扭转战争移,于是咱们建树了坐标变更模子,以仿射变更作为模子底子,松散改善的高精度鲁棒的RANSAC算法提取前景目的,并比力灰度投影法,比力两种模子下场。
详尽下场不雅点释与附录。
下场四是对于前三个下场的综合使用。
使用基于稠浊高斯模子配景建模Vibe算法,对于前景目的举行提取;
选出具备明晰前景目的的参考帧,盘算参考帧中明晰前景目的所占的面积,并将此面积设定为阈值T,遍历齐全的视频帧,盘算其前景目的所占的面积,经由相减比力,判断明晰前景目的。
若判断为明晰前景目的则输入其地址视频帧中的帧号,并将明晰前景涌现的总帧数削减1。
下场五是针对于多摄像头多目的的协同跟踪下场。
在下场二的稠浊高斯模子底子上咱们建树了动态配景提取法,对于络续变更的配景举行实时更新。
再行使单应性解放法对于多目的暴发重叠征兆举行投影将重叠目的区并吞来,对于目的举行定位。
由于目的的络续行为,咱们付与粒子滤波法对于前景目的举行实时跟踪,经由多摄像头的协同通讯实现对于多前景目的的检测。
下场六是针对于监控视频中前景目的涌现颇为情景时候辨能否有颇为责任的下场。
在基于怪异展现的模子上,引入稠浊高斯模子用于学习不合尺度的行为特色法则,而后经由各个单高斯模子中的均值建树一个相似矩阵作为字典。
以测试阶段天生的核矢量为底子,用该部份特色的核矢量盘算基于怪异展现的重构倾向,并将其与已经设定的阈值举行比力,假如重构倾向大于阈值,则判为颇为。
1
申请建树图的存储结构(毗邻表或者毗邻矩阵),输入纵情的一个图,展现图的广度优先搜查遍历路途。
1
共 313 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡