
数据结构
谁的BUG最难改
这个作者很懒,什么都没留下…
展开
-
浅析背包问题
明确状态定义:清楚地定义dp[i][j]的含义。找出状态转移方程:根据问题的特点,找出递推关系。初始化状态:设定初始条件。迭代计算:通过循环或递归计算出结果。读取结果:最终结果通常是dp表中的某个值。通过练习和不断总结,你会逐渐掌握构建递推式和解决动态规划问题的方法。要理解和构建递推式如这样的动态规划转移方程,并不是靠灵光一现的“神仙想法”,而是通过系统的思考和不断练习来掌握的。确定什么是“状态”,即问题在每一步的具体情况。dp[i][j]表示前i个物品中,放入容量为j的背包的最大价值。原创 2024-05-31 11:27:13 · 658 阅读 · 0 评论 -
DS的代码整理(下)
还有这么多莫名其妙的代码,终究还是写代码的时候懒得写文件名的缘故。[二分查找.cpp]原创 2023-04-18 11:27:23 · 222 阅读 · 0 评论 -
DS树--二叉树高度
【代码】DS树--二叉树高度。原创 2023-04-18 11:14:31 · 138 阅读 · 0 评论 -
DS的代码整理(上)
OJ上已经把我的账号记录删除了,只有本地还有一些存档,但是我又不记得题目,只有文件名写了是ABCDE,就把代码都发出来吧。原创 2023-04-18 11:13:58 · 207 阅读 · 0 评论 -
MapReduce实现平均分计算
至此,词频统计程序顺利运行结束。需要注意的是,如果要再次运行WordCount.jar,需要首先删除HDFS中的output目录,否则会报错。原创 2022-11-19 12:56:28 · 1323 阅读 · 0 评论 -
球型黑白棋
《数据结构与算法》大作业题目说明图 1 黑白棋的初始状态 黑白棋的游戏规则简单,上手很容易,棋盘的变化也远没有围棋那么复杂。早在1997年8月,使用着不如当今手机高效的计算机,执行着非机器学习的代码,人工智能就已经将人类冠军击败,并从此把人类棋手远远甩在后面,是最早被人工智能攻克的人类游戏之一。所以,十分适合拿来作为我们大作业的课题。 但是,我们要做的并不是普通的黑白棋。众所周知,黑白棋中,边沿位置和角落位置因为能够有效地防止被对方棋子包夹,占有着极大优势,是游戏过程中必须要争取位置。那么,能不能设计一个没原创 2022-06-24 10:35:32 · 1423 阅读 · 0 评论 -
A. 前驱后继(线性结构)
【id:144】【10分】A. 前驱后继(线性结构) 题目描述在双向链表中,A有一个指针指向了后继节点B,同时,B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。输入第一行两个正整数n(代表节点个数),m(代表要找的关键字的个数)。接下来输入n个整数为关键字key(数据保证关键字在数列中没有重复)。接下来有m个要查找的关键字,每原创 2022-06-06 15:35:57 · 434 阅读 · 0 评论 -
E. DS线性表—多项式相加
【id:24】【20分】E. DS线性表—多项式相加 题目描述对于一元多项式 p(x)=p0+p1x+p2x2+ … +pnxn ,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2。编程实现两个多项式的相加。例如5+x+2x2+3x3,-5-x+6x2+4x4,两者相加结果:8x2+3x3+4x4其中系数5和-5都是x的0次方的系数,相加后为0,所以不显示。x的1次方同理不显示。可用顺序表或单链表实现。输入第1行:输入t表示有t组测试数据第2行:输入n表示有第1组的第1个多项式包含n个项第原创 2022-06-06 15:32:35 · 658 阅读 · 0 评论 -
D. DS链表—学生宿舍管理
【id:25】【20分】D. DS链表—学生宿舍管理 题目描述假设某校有20间宿舍,宿舍编号101,102,…,120。每间只住一名学生。初始部分宿舍已用。用两个链表(已用宿舍链表和可用宿舍链表)维护宿舍的管理,实现宿舍分配、宿舍交回。约定已用宿舍链表按宿舍号升序链接。初始可用宿舍链表也按宿舍号升序链接。宿舍分配从可用宿舍链表中摘取第一间宿舍分配给学生。学生交回的宿舍挂在可用宿舍链表最后。备注:使用list容器或静态链表。不用考虑宿舍分配和交回不成功的情况。输入初始宿舍状态,第一行输入n,表示已用宿舍n间后原创 2022-06-06 15:25:28 · 649 阅读 · 1 评论 -
C. DS单链表--合并
【id:23】【20分】C. DS单链表–合并 题目描述假定两个单链表是递增有序,定义并实现以下函数,完成两个单链表的合并,继续保持递增有序int LL_merge(ListNode *La, ListNode *Lb)输入第1行先输入n表示有n个数据,接着输入n个数据 第2行先输入m表示有M个数据,接着输入m个数据输出输出合并后的单链表数据,数据之间用空格隔开样例查看模式 正常显示 查看格式 输入样例1 ......原创 2022-06-06 15:23:44 · 1139 阅读 · 0 评论 -
B. DS单链表--结点交换
【id:22】【20分】B. DS单链表–结点交换 题目描述用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换交换函数定义可以参考:swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号swap (ListNode * p, ListNode * q) //p和q表示指向两个结点的指针输入第1行先输入n表示有n个数据,接着输入n个数据第2行输入要交换的两个结点位置第3行输入要交换的两原创 2022-06-06 15:20:27 · 427 阅读 · 0 评论 -
A. DS单链表--类实现
【id:21】【20分】A. DS单链表–类实现 题目描述用C++语言和类实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据类定义参考 输入n 第1行先输入n表示有n个数据,接着输入n个数据 第2行输入要插入的位置和新数据 第3行输入要插入的位置和新数据 第4行输入要删除的位置 第5行输入要删除的位置 第6行输入要查找的位置 第7行输入要查找的位置输出n 数据之间用空格隔开,第1行输出创建后的单链表的数据每原创 2022-06-06 15:18:50 · 998 阅读 · 0 评论 -
C. DS二叉平衡树构建(教材版)
【id:157】【20分】C. DS二叉平衡树构建 题目描述 在初始为空的平衡二叉树中依次插入n个结点,请输出最终的平衡二叉树。 要求实现平衡二叉树,不可以使用各类库函数。 AVL代码参考模板: #include using namespace std; #define LH 1 // 左高 #define EH 0 // 等高 #define RH -1 // 右高 class BiNode { public: int key; // 关键值 int bf; // 平衡因子 BiNode *lChild原创 2022-05-26 21:07:46 · 2043 阅读 · 0 评论 -
D. DS二叉树—二叉树镜面反转
D. DS二叉树—二叉树镜面反转 题目描述 假设二叉树用二叉链表存储,用先序序列结果创建。输入二叉树的先序序列,请你先创建二叉树,并对树做个镜面反转,再输出反转后的二叉树的先序遍历、中序遍历、后序遍历和层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。 –程序要求– 若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio 程序中若include多过一个头文件,不看代码,作0分处理 不允许使用第三方对象或函数实现本题的要求 输入 测试次数t原创 2022-04-26 20:42:38 · 1313 阅读 · 0 评论 -
D. DS队列----银行单队列多窗口模拟
D. DS队列----银行单队列多窗口模拟 题目描述 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。 本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间。 输入 输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排好了顺序;最后一行给出正整数K(≤10)原创 2022-03-29 22:41:41 · 488 阅读 · 0 评论 -
D. DS顺序表之循环移位
【id:20】【25分】D. DS顺序表之循环移位 题目描述 顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1位,即原来的尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5。以下是移位的多个例子: 原数据:1,2,3,4,5,6 左移3位:4,5,6,1,2,3,与原数据对比 右移4位:3,4,5,6,1,2,与原数据对比 请编写程序实现顺序表的循环移位操作 输入 第1行输入n表示原创 2022-03-08 16:08:09 · 521 阅读 · 0 评论 -
C. DS顺序表--合并操作
【id:19】【25分】C. DS顺序表–合并操作 题目描述 建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000) 已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序 输入 第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等 第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等 输出 顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开 第1行输出创建后的顺序表内容 样例查看模式 正常显示 查看格式原创 2022-03-08 16:07:23 · 246 阅读 · 0 评论 -
B. DS顺序表--连续操作
【id:18】【25分】B. DS顺序表–连续操作 题目描述 建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000) 该类具有以下成员函数: 构造函数:实现顺序表的初始化。 插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。 删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置i开始删除多个数据。 编写main原创 2022-03-08 16:06:51 · 191 阅读 · 0 评论 -
A. DS顺序表--类实现
【id:17】【25分】A. DS顺序表–类实现 题目描述 用C++语言和类实现顺序表 属性包括:数组、实际长度、最大长度(设定为1000) 操作包括:创建、插入、删除、查找 类定义参考 输入 第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据 第2行输入要插入的位置和新数据 第3行输入要插入的位置和新数据 第4行输入要删除的位置 第5行输入要删除的位置 第6行输入要查找的位置 第7行输入要查找的位置 输出 数据之间用空格隔开 第1行输出创建后的顺序表内容,包括顺序表实际长度和数据 每成功执行原创 2022-03-08 16:06:04 · 239 阅读 · 0 评论