![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 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 · 1124 阅读 · 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 · 520 阅读 · 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 · 560 阅读 · 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 · 1656 阅读 · 0 评论 -
POJ 数据结构的动态管理
之前看了POJ的编程题目,大致讲的是模拟公司管理入职、离职管理的组织管理,收藏了一位提交者的answer:#include <cstdio>#include <cstring>const int MAXN = 1010;//2003//自己封装体中含有度,作为里面的成分struct node{ int son[MAXN]; //用链表比较...转载 2018-04-25 17:10:14 · 123 阅读 · 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 · 1599 阅读 · 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 · 1408 阅读 · 0 评论 -
用数组来实现链表的插入查找删除功能
假设有100名员工,他们分别在10家公司中,现在要模拟他们的入职(插入)、信息查询(查找)、离职(删除)等管理操作行为,用数组来代替链表实现,具体代码如下:#include "stdafx.h"#include <stdlib.h>#define EMPLOYEE_NUM 100#define COMPANY_NUM 10typedef struct Em...原创 2018-04-20 09:51:10 · 1059 阅读 · 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 · 144 阅读 · 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 · 119 阅读 · 0 评论 -
字典序的排列实现
下面是排列算法实现,并且按照字典序进行输出,效率可能存在问题,大家可以优化指正!#include<stdio.h>int g_count = 0;void swap(int*p1, int*p2){ int temp = *p1; *p1 = *p2; *p2 = temp;}//begin开始的索引//新的size为size-beginvoid changeOrd...原创 2018-04-18 11:08:28 · 299 阅读 · 0 评论 -
用二维数组表示图中的上下左右偏移,然后进行移动遍历
我们在遍历图时往往会涉及到点的上下左右移动,使用二维数组对移动的方向做个记录,将变得简洁方便,下面给出了一个栗子():#includestruct 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 · 4243 阅读 · 0 评论