数据结构与算法
文章平均质量分 80
数据结构与算法
人苼若只茹初見
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于邻接表储存的图的深度优先和广度优先遍历
一.深度优先遍历是连通图的一种遍历方法: 设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选原创 2017-11-02 23:06:16 · 5058 阅读 · 1 评论 -
整数划分问题
题目描述计算将一个给定的正整数划分为一系列正整数的和的方案数,称为整数的划分问题,例如,当给定正整数为6时,可以有如下划分:6=6;6=5+1;6=4+2=4+1+1;6=3+3=3+2+1=3+1+1+1;6=2+2+2=2+2+1+1=2+1+1+1+1;6=1+1+1+1+1+1+1。如果用f(n)代表正整数n的划分数,则f(6)=11现在,给你数字n,要...原创 2018-12-05 19:39:47 · 472 阅读 · 0 评论 -
找单词问题
问题描述Problem Description假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列...原创 2018-12-05 20:10:05 · 261 阅读 · 0 评论 -
最优合并问题
题目描述给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并两个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需要的总比较次数最少。输入 输入一个正整数n (0 < n < 1000)表示序列的个数 接下来n个正整数表示每个序列元素的个数...原创 2018-12-13 14:08:48 · 540 阅读 · 0 评论 -
数字三角形
题目描述给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大;三角形的第i行有i个数(i=1...n),对于i,j,位置只能走到i+1,j与i+1,j+1位置; 输入n代表层数,下面是n层;(1<=n<350) (三角形里的数<100); 输出最大和 样例输入29711 88...原创 2018-12-13 15:24:28 · 263 阅读 · 0 评论 -
租用游艇问题
题目描述长江俱乐部在长江设置了n个游艇出租站1,2,…n,游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j), 1 <= i< j <= n 。,设计一个算法,计算出从出租站1到出租站n所需要的最少租金 输入第 1 行中有 1 个正整数 n(n<=200) ,表示有 n个游艇出租站。...原创 2018-12-14 11:04:09 · 1015 阅读 · 1 评论 -
相邻数之差
如果有n个数, 这n个数中相邻数之间的差的绝对值能够取遍[1,n-1]之间所有的整数.那么就输出OK否则输出NO;例如:1 4 2 3 就是是'OK' ,因为相邻数之差的绝对值分别为3、2、1。输入有T组测试数据。输入的第一行是数据组数T,其后每一行是一组测试数据。每行包含一个整数n(n≤300),然后是n个整数,表示一个输入序列输出对于输入的每一行,输出一行 OK' 或者 N...原创 2018-12-09 12:03:30 · 1629 阅读 · 0 评论 -
有重复元素的全排列
题目描述集合S中有n个元素,其中的元素可能重复,设计一个算法,计算出S的不同排列字符全部由小写字母组成,输出按照字典序输出n <= 9输入第一行一个整数n第二行一个字符串包含n个字母输出所有的全排列最后一行输出个数样例输入4aacc 样例输出aaccacacaccacaaccacaccaa6代码如下#include&l...原创 2018-12-09 14:50:37 · 4632 阅读 · 1 评论 -
开灯问题
开灯问题,有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?样例输入7 3样例输出1 5 6 7代码如下#include<stdio.h>#include<stdlib.h...原创 2018-12-09 17:13:36 · 243 阅读 · 0 评论 -
多处最优服务次序
题目描述设有n个顾客同时等待一项服务,顾客i所需要的服务时间为ti,共有s处可以提供这项服务。应如何安排顾客的服务次序,才能使平均等待时间最短?平均等待时间是n个顾客等待服务时间的总和除以n。输入输入n,s分别表示顾客人数和处理服务的窗口数(0<n,s<=10^5)接下来一行表示每个顾客所需要的服务时间ti输出输出最小平均等待时间,保留2位小数样例输入1...原创 2018-12-09 18:29:09 · 743 阅读 · 2 评论 -
排列的字典序问题
n个元素有n!个不同的排列。将这n!个不同的排列按字典序排列,并编号为0,1,2,…,n!-1。现在给定n个元素及一个排列,求这个序列的字典序值,和字典序排列的下一个排列。样例输入826458173 样例输出82272 6 4 5 8 3 1 7代码如下#include<stdio.h>#include <string.h&g...原创 2018-12-11 19:56:32 · 479 阅读 · 0 评论 -
标准二维表问题
题目描述设n是一个正整数,2*n的二维表是由正整数1,2,…,2n组成的2*n数组,该数组的每行从左到右递增,每列从上到下递增。这样的数组为标准二维表。输入一个整数n(0<n<=10^3)输出标准二维表的个数,由于结果较大,输出结果要模除1000000007。 样例输入3样例输出5先把2*n个数字排成一行来看(1~2*n 有序)。放到第一行...原创 2018-12-11 20:28:20 · 710 阅读 · 0 评论 -
汽车加油问题
题目描述一辆汽车加满油后可以行驶n公里(开始时汽车已加满油),旅途中共有k个加油站,第k+1个是目的地,输出最少加油次数,若到达不了目的地,请输出-1。输入输入n,k,分别表示汽车加满油可以走的路程和加油站的个数(0<n,k<=10^6)接下来一行是k+1个数,表示第k-1个加油站到第k个加油站的距离输出输出若汽车可以到达目的地,输出最少加油次数,否则输...原创 2018-12-11 21:21:45 · 333 阅读 · 0 评论 -
删数问题
题目描述给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最小的删数方案。输入输入一个长度为n的数字和一个k(n<=1000,k<1000,保证n>k)输出输出删掉k位之后的数(可能存在前导0 比如 0123)样例输入 178543 4样例输出13...原创 2018-12-12 10:45:41 · 335 阅读 · 0 评论 -
VS中出现乱码的问题解决方法
在SQL server中,如果是默认设置下,直接插入中文字符,就会出现乱码。解决该问题是可以通过改变数据库的属性--排列规则,来解决的但是因为vs内置的数据库不能直接改变排列规则,所以应该执行一条命令,ALTER DATABASE [数据库名] COLLATE Chinese_PRC_CI_AS如何执行该命令呢选择你的数据库然后新建查询然后执行上述命令就可以解决该问题。之后再...原创 2019-06-19 17:46:24 · 2917 阅读 · 0 评论 -
给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作: (1)设计一个显示对学生信息操作的菜单函数如下所示: *************************
给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作:(1)设计一个显示对学生信息操作的菜单函数如下所示:************************* 1、录入学生基本信息 2、直接插入排序 3、冒泡排序 4、快速排序 5、简单选择排序原创 2017-12-21 13:39:19 · 33420 阅读 · 9 评论 -
二叉排序树的构造,插入,删除,完整c代码实现
#include #include typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; //在给定的BST中插入结点,其数据域为element void BSTInsert( BiTree *t, int elem原创 2017-12-02 22:38:34 · 3638 阅读 · 0 评论 -
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 程序源代码:#include "stdio.h"#include "conio.h"main(){ int i,j,k; printf("\n"); for(i=1;i原创 2017-10-08 16:08:02 · 5109 阅读 · 0 评论 -
贪心算法详解
贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。也就是说贪心对于算法的每一个决策点,每一次的选择,做一个当时看起来是最佳的选择。它并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解。 我们先从DP来过渡到贪心,先来转载 2017-10-08 15:57:43 · 590 阅读 · 0 评论 -
数据结构c 进制转换问题(栈)
数据结构 进制转换 栈 C语言原创 2017-10-07 17:22:47 · 2543 阅读 · 2 评论 -
哈夫曼树 代码实现
什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径最短的二叉树。所谓树的路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为W= (W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径原创 2017-10-09 15:23:13 · 2528 阅读 · 0 评论 -
队列的基本操作 数据结构
队列(queue)也是线性表的一种特殊情况,其所有的插入均限定在表的一端进行,而所有的删除则限定在表的另一端进行。允许插入的一端称队尾(rear),允许删除的一端称队头(front)。队列的结构特点是先进队的元素先出队,因此,通常又把队列叫做先进先出表. 队列的基本操作:(1) InitQueue(&Q): 初始化操作,设定一个空队列。(2) QueueEmpty原创 2017-10-09 21:27:43 · 608 阅读 · 0 评论 -
最小生成树(数据结构)
最小生成树-Prim算法和Kruskal算法 Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch转载 2017-10-10 15:28:22 · 334 阅读 · 0 评论 -
循环队列的应用——舞伴配对问题(数据结构 C语言)
循环队列的应用——舞伴配对问题: 在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。 #代码实现...原创 2017-10-10 15:11:24 · 16819 阅读 · 5 评论 -
栈和队列的基本操作
/* 对栈实现初始化,插入栈顶元素,删除栈顶元素,遍历栈,清空栈等基本操作 */ 1 #include stdio.h> 2 #include malloc.h> 3 #include stdlib.h> 4 5 #define true 1 6 #define false 0 7 8 9 typedef struct Node 10 { 11 in原创 2017-10-19 12:35:27 · 348 阅读 · 0 评论 -
树的三种遍历方法代码实现 (数据结构)C语言
树的三种遍历方法:前序,中序和后序。如何用栈实现递三种遍历树的算法 1)前序遍历 a)递归方式: void preorder_recursive(Bitree T) /* 先序遍历二叉树的递归算法 */ {原创 2017-10-11 12:32:28 · 5346 阅读 · 0 评论 -
树的广度(深度)优先遍历算法
1 树的广度优先遍历算法 广度优先遍历算法,又叫宽度优先遍历,或横向优先遍历,是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。 如上图所示的二叉树,A 是第一个访问的,然后顺序是 B、C,然后再是 D、E、F、G。借助队列数据结构,由于队列是先进先出的顺序,因此可以先将左子树入队,然后再将右子树入队。 这样一来,左子树结点就存在队头,可以先被访问到。2 树原创 2017-10-11 22:28:11 · 2942 阅读 · 0 评论 -
用二叉链表存储的二叉树进行先序、中序和后序遍历的算法
用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作#include #include #include using namespace std; typedef int Elemtype; typedef struct BiTnode { Elemtype dat原创 2017-10-12 12:34:07 · 43507 阅读 · 10 评论 -
二叉树的层次遍历及求节点个数的算法
(1)访问根结点,并将根结点入队;(2)当队列不空时,重复下列操作: 从队列退出一个结点;若其有左孩子,则访问左孩子,并将其左孩子入队;若其有右孩子,则访问右孩子,并将其右孩子入队;#include#includetypedef struct binode{ char data; struct binode *lchild原创 2017-10-23 13:13:38 · 7880 阅读 · 0 评论 -
顺序表的查找
(1)随机产生n个两位整数,构造一个查找表。(2)输入一个整数,利用顺序查找法在查找表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。(3)对查找表按递增顺序进行排序。(4)输入一个整数,利用折半查找法在有序表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。#include #include #includ原创 2017-11-29 22:12:44 · 2760 阅读 · 0 评论 -
数据结构 括号匹配问题 (栈 C语言)
现在,有一行括号序列,请你检查这行括号是否配对。输入数据保证只含有"[","]","(",")"四种字符输出如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No代码如下#include#include#define SIZE 20#define CREMENT 10typedef struct{char *ba原创 2017-10-08 22:59:49 · 12135 阅读 · 1 评论
分享