题目一
本题要求设计并实现一个图分割算法程序。
【基本要求】
(1)解析输入文件格式,读入测试数据并设计合适图存储方式,设计并运行图
分割算法,按照输出文件格式写入对应文件(如 Test?_out.txt)。
(2)输入文件格式
点数 边数 子图数 //第一行,空格分隔
顶点号 i 顶点号 j 边上权值 //各边起始、终止顶点编号(从 0 开始)和权
值,空格分隔
…
(3)输出文件格式
各个顶点所属子图编号 //第一行,编号从 0 开始,空格分隔
RatioCut: XX //第二行
SmallestCut:XX //第三行
【测试数据】
图分割数据中 5 个文件(Test1.txt-Test5.txt)。
题目二
本题要求选取一种已经学过的动态 搜索树结构,设计并实现一个桌面电话簿软件。
【基本要求】
一个完整的电话簿通讯录管理软件应具有以下功能:
(1)支持复式联系人数据的存储,数据条目不少于1000 条。
每个人名下可保存的信息包括:姓名、城市、手机号码、住宅电话号码、办
公电话号码、电子邮件、公司、地址、所属群组、备注、添加时间等 11 个字段。
(2)支持联系人记录的添加、删除、编辑等操作。
(3)支持群组:将不同类型的人群按照城市、同事、朋友、家人、商务伙
伴等分组,支持群组记录的添加、删除、编辑等操作。
(4)支持所有联系人记录的导入、导出操作,外部数据采用 TXT 格式,内
部数据采用自己设计的二进制数据文件格式。
(5)支持联系人记录的各种灵活查询功能,具体包括:
① 逐条翻看
能显示所有的联系人记录,支持分屏查看。
② 多种方式查询 通过城市、添加时间、公司、地址、电子邮件、备注等任意字段都可搜索到联系人。
③ 电话号码查询
输入一个电话号码(手机、住宅、办公)的全部或者一部分,能将包含该号
码的联系人记录显示出来。
④ 人名查找
输入一个人名(全名、部分名、拼音首字母、部分拼音),能将包含该姓名
的联系人记录显示出来。
⑤ 群组查找
选择一种群组类型,能将属于该群组的所有联系人记录显示出来。
(6)要求使用 BST 或者 AVL 实现动态索引结构。
【测试要求】
需要使用提供的三个测试数据进行演示,分别包含 5000、10000 和 100000
条联系人记录。
题目三
本题要求首先自学并实现 KD-Tree 的数据结构,然后基于该数据结构,设计和实现一个简单的点云数据处理软件。
【基本要求】
一个简单的点云数据处理软件应具有以下功能:
(1)点云数据解析
解析输入的点云数据文件(ASCII 格式),构建点云数据集,浏览数据基
本信息(含维度、点云宽度、点云高度、点云总点数等)。点云显示可使用
CloudCompare。
(2)实现 KD-Tree 的构建
设计并实现自己的 KD-Tree 数据结构,支持维数 K 的定制;
(3)提供最近邻搜索功能
输入任意点的坐标,搜索并输出其最邻近点。
(4)提供范围搜索
输入任意点的坐标和搜索半径,搜索并输出相关点集。
【提高要求】
(1)提供 K-近邻查询功能;
(2)提供欧式聚类的算法。
【测试要求】
使用提供的三个点云测试数据进行演示,根据软件数据承载和搜索性能给出
分数。
源码:
百度链接:https://pan.baidu.com/s/1xaSJSxDELF5T-v6AkTnvxA?pwd=fs5d
提取码:fs5d