数据结构与算法
文章平均质量分 55
悟初境
What I cannot create, I do not understand.
展开
-
简单邻接表构造图
采用经典的数据结构算法,略有改动。#include #include #define ElenType int#define InfoType char#define VertextType int//顶点信息#define Status int//返回值类型#define OK 1#define ERROR 0#define OVERFLOW -1#define MAX_V原创 2015-11-04 20:22:30 · 677 阅读 · 0 评论 -
基于栈的迷宫算法
很久以前写的迷宫搜索,想想还是发表了吧。原创 2022-04-02 14:36:54 · 150 阅读 · 0 评论 -
最小生成树Prim和Kruskal算法
采用邻接矩阵的存储结构构建无向网,然后用Prim和Kruskal算法求出最小生成树。总代码:#include #include #define VRType int//在这里是权值类型#define MAX_VERTEX_NUM 10//最大顶点个数#define VertexType char //顶点类型#define INFINITY 32767 //无穷大,不连通//边原创 2015-11-26 00:34:40 · 989 阅读 · 0 评论 -
排序算法时间比较
看题目:为了求平均时间,我不得不循环3次求平均值,所以需要等上三倍的时间。等得不耐烦,CPU没下过50%。数据在文件中,因为有100000个,所以读取也会花一定时间,但是整个程序只分配了一个数组。代码:#include #include #include #define PER_SECOND 1000//一秒using namespace std原创 2015-12-15 18:38:44 · 1044 阅读 · 0 评论 -
深度广度优先遍历最小生成树
怎么用图的深度和广度优先遍历来遍历树呢?我是这样想的,把树构造成图就行了。// 图的遍历.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "LinkQueue.h"#include #include #define VRType int//在这里是权值类原创 2015-12-04 09:00:00 · 5618 阅读 · 1 评论 -
中值和均值滤波
无语是我的本性。#include #include #define DataType int#define N 500//数据长度int M=0,A=0;DataType data[N];//函数声明DataType GetMid(DataType *data,int i,DataType *dm);void ReadData(DataType *data,const cha原创 2015-12-08 08:32:51 · 1636 阅读 · 1 评论 -
分治法求解最近点距
1.问题描述:最近点对问题很简单,就是给定一堆点(这里是二位坐标下),求解最近的点的距离,该问题可以用穷举法求解,双重循环就够了,就不说了,主要看一下分治法的代码,代码也很简单,有注释。2.分治法求解:代码如下:采用C++类模板编写 编译环境VS2015#include <stdio.h>#include <tchar.h>#include"math.h"#include<iostream>翻译 2016-04-12 08:33:07 · 1096 阅读 · 0 评论 -
覆盖最多的直线上的点
题库建设。。。题目已知X1,X2,X3,…,Xn是直线上的点,现希望用固定长度固定数量的木条去覆盖这些点,请编写程序求最多能够覆盖多少点?输入要求:输入的第1行为三个整数n,m,k,分别表示直线上点的个数,木条的长度以及数量。输入的第2行有n个整数,表示坐标上的点。 输出要求:输出1行,为最多能够覆盖的点的个数。输入样例: 8 3 2 10 7 6 1 -5 4 18 20代码及注释#incl原创 2016-05-05 18:03:49 · 1314 阅读 · 0 评论 -
整数分解成不同加数的最大乘积
题库建设题目设n为一自然数,n可以分解成若干个不同的自然数的和,这样的分法有很多种,比如n=10, 10可以分解为:10=5+4+1; 10=5+3+2; 10+9+1; 10=8+2; 10=7+3; 10=6+4; 10=,7+2+1; 10=6+3+1;…。在所有这些分法中,各加数乘积最大的为30, (10=5+3+2中加数的乘积为5*3*2=30)。试编写程序,求各种分解方法中各加数乘积的最原创 2016-05-05 18:10:11 · 3932 阅读 · 3 评论 -
动规-多边形游戏
1.题目描述多边形游戏大概是这样的:看下面的一幅图:有一个多边形,节点处是数字,边上是运算符,这里只考虑“+”和“*”两种,两个点的数与他们之间的运算符进行运算后的结果数构成新的节点,这样运算到最后只剩一个数,我们要求得能够运算出的最大的数。2.代码#include <stdio.h>#include <iostream>using namespace std;int ***m;char *o翻译 2016-05-08 20:34:09 · 987 阅读 · 0 评论 -
全排列与回溯法解旅行商问题
虽然说全排列好像很简单,但真的当用程序来生成时还一时不知道怎么办,但是我觉得穷举法是很多算法的基础,比如回溯法,排序等,我会以旅行商问题来说明全排列,只需一次就会了。1.开始回溯法的本质也是搜索,只是加上了约束条件,使搜索的次数减少许多,我们把约束条件和目标函数的边界称为剪枝策略。对于旅行商这个问题,说的是一个商人想从一个城市出发,不重复地走遍所有城市然后回到起点,每个城市间有不同的旅行费用,求花最原创 2016-06-03 20:00:05 · 5053 阅读 · 2 评论 -
霍夫曼编码实现
仅供日后参考,价值不定。问题描述:只考虑英文字母(不区分大小写)和空格,计算每个字符出现的频率,给出霍夫曼编码。实现思路:1.丛文件中读取文本,同时记录每个字符的频率,并初始化树2.根据初始化的树建立霍夫曼树3.根据霍夫曼树进行编码4.输出要编码的字符串:FAST is an algorithm proposed originally by rosten and原创 2015-11-20 11:10:34 · 924 阅读 · 3 评论 -
KMeans简单实现
此文章仅供日后参考,不做任何讲解。 能看懂就看吧,已经是很简化的代码了。实现一个简单的KMeans算法,将1000个二维坐标进行聚类,因为KMeans在事先知道集合的数量时是很优秀的,速度快,这次数据有两个集合。具体步骤:1. 将1000个数据存在一维数组里(当然是读文件)2. 随机分配2个簇的中心坐标3. 开始聚类,具体算法只能意会4.原创 2015-11-20 09:53:05 · 620 阅读 · 0 评论 -
三元组矩阵的乘法
三元组矩阵的乘法,针对稀疏矩阵:源代码如下:#include #include #define MAXSIZE 100 //非零元的最大个数#define MAX_ROW_NUM 20//最大行列数#define ElenType int#define Status int//返回值类型#define OK 1#define ERROR 0#define OVERFLO原创 2015-11-11 18:17:10 · 9139 阅读 · 1 评论 -
汉罗塔的递归实现
首先是汉罗塔的递归实现#include void move(char a,int n,char b){ //把编号为n的盘从a移动到b printf("Move %d from %c to %c\n",n,a,b);}void hanio(int n,char x,char y,char z){ //把编号从1到n的盘通过y做辅助从x移动到z //要求: //1.每次只能移动原创 2015-10-26 14:29:15 · 743 阅读 · 0 评论 -
栈的基本操作
当你看到这个时,你会想起你敲过多少遍:#include #include #define ElemType int#define Status int#define INIT_SIZE 10 //初始化长度#define INCRE_SIZE 10 //增量#define OK 1#define ERROR 0#define OVERFLOW -1typedef struc原创 2015-10-30 19:20:18 · 397 阅读 · 0 评论 -
队列基本操作
此队列操作烂熟于心:#include #include #define ElemType int#define Status int#define OK 1#define ERROR 0#define OVERFLOW -1typedef struct Node{ //队列的一个节点 ElemType data; struct Node *next;}Node,*Queu原创 2015-10-30 20:17:31 · 498 阅读 · 0 评论 -
二叉树的创建的内存问题
下面的二叉树创建代码是有问题的:#include #include #define MAX_LEN 50#define ElemType char#define Status int#define OK 1#define ERROR 0#define OVERFLOW -1typedef struct Node{ ElemType data; struct Node *l原创 2015-10-26 18:27:30 · 1105 阅读 · 0 评论 -
二叉树的创建和遍历
#include #include #define MAX_LEN 50#define ElemType char#define Status int#define OK 1#define ERROR 0#define OVERFLOW -1typedef struct Node{ ElemType data; struct Node *lchild,*rchild;}Bi原创 2015-10-28 19:40:18 · 493 阅读 · 0 评论 -
几种插入排序
1.直接插入排序2.折半插入排序3.希尔排序原创 2015-12-10 10:40:58 · 397 阅读 · 0 评论 -
三元组矩阵转置
#include #include #define MAXSIZE 100 //非零元的最大个数#define ElenType int#define Status int//返回值类型#define OK 1#define ERROR 0#define OVERFLOW -1/*稀疏矩阵的三元组存储结构*/typedef struct { int row,col;//非零元翻译 2015-11-01 12:55:09 · 3275 阅读 · 1 评论 -
B树详细图解与Java完整实现
本文的目的是从B树的起源讲起,再到多种语言的实现,以达到对B树有一个全面的认识,如果你是一个正常的程序员,那么看完就应该可以实现一个B-Tree了(如果你已经会了,那么也不会看完)。B树的起源在1970年,Bayer&McCreight发表的论文《ORGANIZATION AND MAINTENANCE OF LARGE ORDERED INDICES 》(大型有序索引的组织和维护)中提出...原创 2018-09-16 17:51:42 · 15199 阅读 · 10 评论