
数据结构与算法
文章平均质量分 53
zyq1122334455
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ List的Remove和erase比较
Remove和erase都可以进行数据的移除,区别在于Remove移除的是List中所有与待移除项相等的数据,而erase移除的是迭代器所指的内容。 Remove有一个是否相等的比较,因此我们在Remove自定义的数据时,要添加“==”运算符的重载实现。 下面给出一个简单的演示例子: #include<iostream> #include<iterator> #include <list> using namespace std; #define R..原创 2020-05-09 21:51:08 · 1259 阅读 · 1 评论 -
DFS求和是否等于一个数
给出一个数组,然后判断其所有组合中是否能够使得和为一个给定的值,给出DFS代码如下:#include<stdio.h> int arr[7] = { 1, 2, 4, 8, 16, 32, 64 }; void dfs(int x, int start, int len, int sum) { if (x == sum) { printf("和为%d的情况存在...\n",...原创 2018-04-25 18:26:56 · 598 阅读 · 0 评论 -
DFS走迷宫
下面给出DFS算法走迷宫的代码:#include <stdio.h> char map[50][51]; //地图上限50*50 int sign[50][50]; //标记 int next[4][2] = { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } }; int n, m; //实际地图行数、列数 int end...转载 2018-04-25 17:51:10 · 638 阅读 · 0 评论 -
案例讲解-哈夫曼编码的使用
下面模拟对原文本进行编码,然后传输后,进行相应的解析得到原有的数据,真个过程也可以看作是一个典型的压缩、解压缩操作,具体演示代码如下:#include <stdio.h> typedef struct INPUT { unsigned char * data; int len; }INPUT; void test(INPUT test, char code[][21]); v...原创 2018-04-25 17:28:15 · 1734 阅读 · 0 评论 -
POJ 数据结构的动态管理
之前看了POJ的编程题目,大致讲的是模拟公司管理入职、离职管理的组织管理,收藏了一位提交者的answer:#include <cstdio> #include <cstring> const int MAXN = 1010; //2003 //自己封装体中含有度,作为里面的成分 struct node { int son[MAXN]; //用链表比较...转载 2018-04-25 17:10:14 · 185 阅读 · 0 评论 -
背包问题的两种解决方法
背包问题是比较常见的算法问题,下面分别给出了动态规划与列举法实现方式,代码如下:动态规划:#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #define V 1500 unsigned int f[10][V];//全局变量,自动初始化为0 unsigned int weigh...转载 2018-04-20 17:12:36 · 1689 阅读 · 0 评论 -
案例讲解-数组实现字典树
看了POJ上的一道题目,大致讲的是给出一方语言A词语所对应的另一方语言B的含义,然后给出B的一些词语,找到A所对应的翻译。显而易见,每个词语逻辑上可以看成是字典树,笔者用数组来实现字典树,具体代码如下,可作参考~#ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include<stdio.h&...原创 2018-04-20 11:45:42 · 1459 阅读 · 0 评论 -
用数组来实现链表的插入查找删除功能
假设有100名员工,他们分别在10家公司中,现在要模拟他们的入职(插入)、信息查询(查找)、离职(删除)等管理操作行为,用数组来代替链表实现,具体代码如下:#include "stdafx.h" #include <stdlib.h> #define EMPLOYEE_NUM 100 #define COMPANY_NUM 10 typedef struct Em...原创 2018-04-20 09:51:10 · 1147 阅读 · 0 评论 -
八皇后问题-输出边长N正方格中满足条件的位置
给定正方格的边长,然后用递归及位操作的思路,使得每一行每一列及对角线上只放置一个点,具体代码如下:#include <stdio.h> #include <time.h> int result[3][13] = { 0 }; int retNum = 0; #define ABS(a) (((a)>0)?(a):(-(a))) char path[13] = { 0...原创 2018-04-19 17:43:05 · 177 阅读 · 0 评论 -
组合算法实现
下面为组合算法实现:#include<stdio.h> int g_array[3]; int len = 3; void combine(int begin, int count, int array[], int size)//cout可选数目 { if (count == len) { for (int j = 0; j < count; j++) { p...原创 2018-04-18 11:18:57 · 162 阅读 · 0 评论 -
字典序的排列实现
下面是排列算法实现,并且按照字典序进行输出,效率可能存在问题,大家可以优化指正!#include<stdio.h> int g_count = 0; void swap(int*p1, int*p2) { int temp = *p1; *p1 = *p2; *p2 = temp; } //begin开始的索引 //新的size为size-begin void changeOrd...原创 2018-04-18 11:08:28 · 348 阅读 · 0 评论 -
用二维数组表示图中的上下左右偏移,然后进行移动遍历
我们在遍历图时往往会涉及到点的上下左右移动,使用二维数组对移动的方向做个记录,将变得简洁方便,下面给出了一个栗子(): #include struct Point{ int px; int py; }; int DIRECTION[4][2] = { {0,-1}, {0,1}, {-1,0}, {1,0} }; int main() { Point pt =Point{ 3,原创 2017-12-05 18:22:55 · 4438 阅读 · 0 评论