给定中国34个省会城市的二维坐标,实现:选择始发城市和剩余33个城市中的全部城市或部分城市作为需要遍历的城市,通过编写相应的遗传算法代码,求解TSP问题中回到始发城市的路径,并且找到路径总长度最短的解。
能够在可视化程序的地图中正确显示34个城市的位置及城市之间的位置关系;
:用户可以通过一定的交互界面选择所有34个城市作为搜索集合,也可以自行选择其中的部分城市作为搜索集合,程序需要给出对应搜索集合下TSP问题的求解方案,用户可以自行设定起始城市(起始城市需在搜索集合中);
1
设二叉树采用二叉链表存储结构,结点数据域为字符类型。
编写控制台应用程序采用先序遍历法建立二叉树存储结构并实现二叉树的字符图形显示。
1
第二次作业:1.编写点类(Point类),属性成员有x,y,都是double数据类型。
需要为Point类编写构造函数。
编写直线类(Line类),需要提供两点确定一条直线的函数功能。
如果两点重合,可以返回异常或者返回null引用来解决这个问题。
直线类的数据成员和函数成员请自行设计。
2.给定文本文件,文件名称为a.txt,文件内容为一个8行8列的字符矩阵,内容为1和0字符,请编程计算出该矩阵中水平方向或者垂直方向或者斜线方向连续1最多的个数。
例如:1100110110110101010101011100100001010101110011010001100011110000 3.编写程序求出1万以内的所有素数,并将这些素数输出到一个文本文件中,每行文本只包含一个素数数据。
该文本文件内容要求可以用记事本程序来查看。
4.编写程序求出1万以内的所有素数,然后再判断这些素数中哪些是由素数拼接而成的。
例如素数23就符合条件,23本身是素数,其由素数2,和素数3拼接(连接)组成。
素数29就不满足条件,2是素数,而9不是素数。
素数307不满足条件,不能忽略0. 7907这个素数符合条件,7是素数,907是素数。
需要把符合条件的拼接素数全部输出,并统计个数。
5.要求从控制台输入英语单词及单词解释两项数据,把录入的数据追加到文件中。
要求提供单词查询功能。
用户输入单词后,从单词库文件中查找,如果存在则输出该单词的解释。
注意,单词不能有重复,如果重复则覆盖替换以前的解释数据。
6.通过命令行参数输入一个文件夹的路径名称,然后编写程序找出该文件夹下文件名称重复并且文件大小也一样的文件,如果没有“重复文件”,则输出“没有重复文件”的提示,如果有,需要输出文件名称,和文件所在的文件夹路径(绝对路径)。
提示,需要遍历该文件夹下所有子文件夹,设计一个文件类,属性包括文件名称,文件路径,文件大小,然后进行“重复” 判断,如果文件重复,则需要记录并输出,有可能有文件名重复,但是文件大小不一样,重复的文件可能不止2个,可能 在不同的子文件夹下有多个文件重复。
7.霍夫曼编码实现压缩文本文件,见文件huffman.rar.对文件数据读写等功能已经实现,程序在Q2Resources.zip中。
Q2Resources.zip中的文件禁止修改。
请将TextZip.java文件所有未实现的函数按照要求给以实现。
2025/10/28 6:08:10 49KB Java
1
Matlab写的区域生长图像分割程序。
%区域生长算法:regionfunctionLabelImage=region(image,seed,Threshold,maxv)%image:输入图像%seed:种子点坐标堆栈%threshold:用邻域近似生长规则的阈值%maxv:所有生长的像素的范围小于maxv%LabelImage:输出的标记图像,其中每个像素所述区域标记为rn[seedNum,tem]=size(seed);%seedNum为种子个数[Width,Height]=size(image);LabelImage=zeros(Width,Height);rn=0;%区域标记号码fori=1:seedNum%从没有被标记的种子点开始进行生长ifLabelImage(seed(i,1),seed(i,2))==0rn=rn+1;%%对当前生长区域赋标号值LabelImage(seed(i,1),seed(i,2))=rn;%endstack(1,1)=seed(i,1);%将种子点压入堆栈(堆栈用来在生长过程中的数据坐标)stack(1,2)=seed(i,2);Start=1;%定义堆栈起点和终点End=1;while(Start<=End)%当前种子点坐标CurrX=stack(Start,1);CurrY=stack(Start,2);%对当前点的8邻域进行遍历form=-1:1forn=-1:1%%判断像素(CurrX,CurrY)是否在图像内部%rule1=(CurrX+m)=1&(CurrY+n)=1;%%判断像素(CurrX,CurrY)是否已经处理过%rule2=LabelImage(CurrX+m,CurrY+n)==0;%%判断生长条件是否满足%rule3=abs(double(image(CurrX,CurrY))-double(image(CurrX+m,CurrY+n)))<Threshold;%%条件组合%rules=rule1&rule2&rule3;if(CurrX+m)=1&(CurrY+n)=1&LabelImage(CurrX+m,CurrY+n)==0&abs(double(image(CurrX,CurrY))-double(image(CurrX+m,CurrY+n)))<=Threshold&image(CurrX+m,CurrY+n)0%堆栈的尾部指针后移一位End=End+1;%像素(CurrX+m,CurrY+n)压入堆栈stack(End,1)=CurrX+m;stack(End,2)=CurrY+n;%把像素(CurrX,CurrY)设置成逻辑1LabelImage(CurrX+m,CurrY+n)=rn;endendend%堆栈的尾部指针后移一位Start=Start+1;endend
2025/10/26 12:49:14 2KB 区域生长图像分割
1
VirtualTreeview是一套Delphi下优秀的VCL控件,代码质量高,使用灵活、功能强大、性能非常好,它不是基于任何系统控件,而是重新编写的。
正如它的名字已经表明,这个控件与其他这类控件相比,使用了一个不同的树管理模式。
它不知道它所管理的数据是什么东西(除了它的大小),甚至没有一个节点的标题。
一切都获取于通过应用程序的事件(或通过派生覆盖方法)。
VirtualTreeview是经过精心设计和彻底的测试。
这个控件证明了它的概念以及在许多商业产品和免费软件的项目中都很健康的运行。
VirtualTreeview是非常快的。
增加一百万节点只需要700毫秒。
需要很少的内存开销。
很适合高速接入,遍历一百万个节点只需要不到0.5秒的时间。
支持多选,支持背景图片,支持复选框,支持右键菜单,支持节点排序,支持Unicode,支持拖曳,支持剪贴板,支持多行列标题等等。
2025/10/15 13:51:33 3.3MB VirtualTreeview
1
以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,以用户的意愿为主选择遍历的方式,以用户的意愿为主看是否要推出程序。
2025/10/14 6:41:15 554KB 无向图的遍历演示
1
**正文**在Windows操作系统开发中,MFC(MicrosoftFoundationClasses)是C++库的一个重要组成部分,它为构建桌面应用程序提供了一种结构化的框架。
而USBHID(HumanInterfaceDevice)是USB设备类规范的一种,主要用于人机交互设备,如键盘、鼠标、游戏控制器等。
本文将深入探讨如何使用MFC来实现对USBHID设备的读写操作。
我们需要理解USBHID的基本概念。
HID设备通过使用HID报告来与主机通信,这些报告包含了设备状态和用户输入的数据。
HID类驱动程序是操作系统的一部分,负责解析和处理这些报告。
开发者无需编写驱动程序,只需与设备的接口进行交互即可。
在MFC环境下,我们可以使用`CreateFile`函数打开USBHID设备,其参数通常包括设备的设备路径,例如`\\?\usb#vid_XXXX&pid_YYYY#...`,这里的`XXXX`和`YYYY`分别是设备的供应商ID和产品ID。
接着,我们调用`DeviceIoControl`函数来进行读写操作,传递适当的控制代码,如`IOCTL_HID_GET_REPORT`或`IOCTL_HID_SET_REPORT`。
为了更方便地管理USBHID设备,我们可以创建一个MFC类来封装这些系统调用。
这个类可以包含成员变量,如设备句柄、设备描述符和报告ID,以及成员函数,如`OpenDevice`、`ReadReport`、`WriteReport`和`CloseDevice`。
以下是一个简单的MFC类设计示例:```cppclassCHIDDevice:publicCObject{public:CHIDDevice();~CHIDDevice();boolOpenDevice(LPCTSTRdevicePath);voidCloseDevice();boolReadReport(void*buffer,DWORDsize);boolWriteReport(void*buffer,DWORDsize);private:HANDLEm_hDevice;};```在`OpenDevice`中,我们执行`CreateFile`,在`CloseDevice`中关闭句柄。
`ReadReport`和`WriteReport`则分别使用`DeviceIoControl`进行读写操作,传递适当的缓冲区和大小。
在实际应用中,我们还需要处理USBHID设备的枚举和选择。
可以遍历`SetupDiGetClassDevs`返回的设备信息集,获取HID设备的详细信息,并根据需求选择合适的设备。
此外,为了处理异步读写,可以使用MFC的消息机制,如消息队列和消息映射,或者使用CAsyncSocket或CAsyncMonikerFile等异步I/O类。
利用MFC开发USBHID应用涉及以下几个关键步骤:1.**设备枚举**:使用`SetupDiGetClassDevs`枚举HID设备,通过`SetupDiEnumDeviceInfo`获取设备详细信息。
2.**设备连接**:使用`CreateFile`打开设备,获得设备句柄。
3.**读写操作**:通过`DeviceIoControl`进行数据交换,读取或设置HID报告。
4.**错误处理**:适当处理可能的错误,如设备未找到、访问权限问题等。
5.**异步处理**:根据需要,使用MFC的消息机制实现异步读写。
通过以上步骤,开发者可以构建一个功能完备的MFC应用程序,实现对USBHID设备的高效控制。
在实际项目中,还可以考虑添加设备事件监听、多设备管理等功能,以提升应用的灵活性和可扩展性。
2025/10/11 10:31:51 30.04MB USB
1
基于边缘的模板匹配参考文献不同该参考文章实现了Canny算法本身。
将创建渐变模板的操作插入其中。
这里的实现是不同的。
首先使用Canny算法查找边缘。
然后遍历边缘以创建渐变模板。
这很慢,但是代码更少(使用EmguCV的Canny)注意使用条件编译符号“FAST”查看更快但不稳定的结果预习图书馆棱镜EmguCV其他资讯
2025/10/9 14:46:37 1.66MB algorithm emgucv matching-algorithm AlgorithmC#
1
分别以邻接矩阵和邻接表的方式实现图的深度优先搜索、广度优先搜索
2025/9/30 18:55:20 2KB DFS BFS 数据结构 邻接矩阵
1
内存遍历工具源码
2025/9/26 12:56:58 166KB 内存遍历工具源码
1
共 325 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡