数据结构与算法(知识点)
阳光坏透了
这个作者很懒,什么都没留下…
展开
-
利用stringstream实现数字与字符串相互转换
1.stringstream数字与字符串相互转换#include <sstream>#include <iostream>#include <string>#include <typeinfo>using namespace std;int main(){ stringstream stream; string buf = "1234"; int i; //1.字符串转换为整形 stream << buf;/转载 2021-09-13 17:53:14 · 456 阅读 · 0 评论 -
HDU1106排序【字符串+整数+排序】
问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106问题分析: 这个问题主要是字符串处理和数字字符串转整数的问题。这里给出两种解题方法,方法一使用自动机来解决;方法二是用库函数strtok()来切割字符串后再将其转换为整数。程序说明: 方法二:使用C语言的库函数strtok()来切割字符串,并且以数字字符“5”作为分割符,处理起来就简单多了。数字字符串转整数使用库函数atoi()来实现,排序使用库函数qsort()来...转载 2020-10-24 15:00:18 · 176 阅读 · 0 评论 -
string与cin中的getline(),get总结
一、string中的getline不是string的成员函数,属于全局函数,使用需要使用include<string>,有两个重载版本:isrteam& getline(istream& is, string& str, char delim);istream& getline(istream& is, string& str);这两个getline读取cin流里的字符串到str中,直到遇到下列情况结束,并返回:(1)遇到文件结束符转载 2020-09-26 10:52:30 · 651 阅读 · 0 评论 -
二分搜索(lower_bound详解)
lower_bound是一种应用于有序数据范围内的算法,它可以返回一个迭代器,这个迭代器指向第一个不小于指定值value的元素。 用途:可以找出第一个能恰当插入value的位置,且能维持指定范围内的元素顺序(有序状态)。 用法:lower_bound()的前两个参数用来指定作为对象的数组或容器的范围。第三个参数用来指定value。 例题:ALDS1_4_B #include<stdio.h>#include<iostream>#include<algorithm&原创 2020-07-12 20:53:59 · 2618 阅读 · 1 评论 -
排列组合问题模板
目录前言一、全排列二、组合问题前言排列组合问题实在暴力枚举的时候经常遇到的问题,是搜索技术的基础之一,是我们必须要掌握的算法。一、全排列递归求全排列:#include<bits/stdc++.h>using namespace std;int data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int num = 0;void solve(int begin, int end){ if(...原创 2020-09-02 12:05:00 · 369 阅读 · 0 评论 -
STL之关联式容器set、map
关联式容器1.管理元素集合的STL容器大致分为两类,序列式容器(有顺序的集合)和关联式容器(经过排序的集合)。2.关联式容器再管理数据的过程中会自动给元素排序。其优点在于可以随时采用二分搜索法,搜索元素的效率极高。set1.set是根据元素值进行排序的集合,所插入的元素在集合中唯一,不存在重复元素。1. #include<set> 用来将STL的set包含到程序中2. set<int> S; 一个声明。3. 成员函数:原创 2020-07-25 14:27:56 · 173 阅读 · 0 评论 -
二叉树的性质及遍历
二叉树的性质1.性质一:在二叉树的第i层上至多有2^(i-1)个结点(i >= 1)2.性质二:深度为k的二叉树至多有2^k-1个结点(k >= 1)3.性质三:对任何一颗二叉树T,如果其终端结点数为n0, 度为2的结点数为n2,则n0 = n2+1.4.性质四:具有n个结点的完全二叉树的深度为 log2n(向下取整)+1....原创 2020-07-19 17:04:09 · 367 阅读 · 0 评论 -
递归和分治及其应用(分治、快速排序)
分治法 定义:使用递归的技巧,可以将一个问题拆分成两个或更多较小的局部问题,利用递归函数求出每个局部问题的劫,然后再将结果整合,最终解决问题,这种编程手法称为分治法。 分治法的核心是将问题分割、拆解为同类的小问题(神似套娃),再进行整合。但是在设计时必须要留有终点。 高等排序当数据庞大或在一些体积庞大的数组面前,冒泡排序(复杂度高达o(n^2))的初等排序就失去了实用价值,通常在竞赛中会出现超时。由此就会用到高等排序。其中,包括归并排序、快速排序和计数排序(桶排序)。归并排序原创 2020-07-15 21:53:30 · 557 阅读 · 0 评论 -
C++STL之栈、队列、vector、表
stack:栈1. #include<stack> //用来将STL的stack包含到程序中2. stack<int> s; //是一个声明,用于生成管理int型元素的栈。在<>中指定类型,从而定义管理该类型数据的容器3. 成员函数: size() 返回栈的元素数 top() 返回栈顶的元素 pop() 从栈中取出并删除元素 push(x)原创 2020-07-10 23:19:39 · 382 阅读 · 0 评论 -
数据结构概述(C++版)
1.1什么是数据结构数据结构是一种在程序中系统化管理数据集合的形式。通常由一下三个概念组成:数据集合。通过对象数据的本体(例如数组和结构体等基本数据结构)保存数据集合。规则。保证数据集合按照一定规矩进行正确操作、管理和保存的规则。操作。“插入元素”“取出元素”等对数据集合的操作。或“查询数据的元素数”等查询。1.1.1栈是一种临时保存数据的数据结构,按照最后进入栈的数据最先出栈的规则(先进后出)管理数据。操作1.push(x):在栈顶部添加元素。2.pop():从栈顶部取出元素。3.原创 2020-07-10 20:59:03 · 447 阅读 · 0 评论