数据结构与算法
文章平均质量分 70
AtwOne
这个作者很懒,什么都没留下…
展开
-
排序算法
class Sort {public: void PrintSort(vector<int>vec,string s) { cout<<s<<endl; for(int i=0;i<vec.size();i++) { cout<<vec[i]<<" "; } cout<<endl; } void BubblingSo.原创 2020-05-13 22:23:45 · 204 阅读 · 0 评论 -
动态规划之矩阵链乘法
#include <iostream>#include <vector>#define MAXVALUE 100000;using namespace std;void matrix_chain_order(vector<int>p,vector<vector<int>>&m,vector<vector<i...原创 2018-04-07 10:31:14 · 202 阅读 · 0 评论 -
动态规划之钢条切割
代码实现:#include <iostream>using namespace std;void ExtendedBUCutRod(const int *p, int n, int *r, int *s){ r[0] = 0; for (int i = 1; i <= n; ++i) { int q = -1; for (int j = 1; j <=...原创 2018-04-06 19:42:10 · 88 阅读 · 0 评论 -
01背包问题
#include <iostream>#include <vector>#include <string>using namespace std;int max(int a, int b){ if (a>b) { return a; } else { return b; }}int main(){ int n = 0...原创 2018-04-04 10:16:10 · 98 阅读 · 0 评论 -
算法之两人取数游戏
题目描述:A、B两人从数组中取数,每次只能从数组的两头取,且每次都取最大的数,问最后赢的情况。举例:有数组 2 4 3 5,现A只能从2或5中取最大的5,数组变为2 4 3,B只能从2 3中取最大的。递归法:#define max(a,b) (((a)>(b))?(a):(b))#define min(a,b) (((a)<(b))?(a):(b))int s(vector&l...原创 2018-04-11 09:13:02 · 1804 阅读 · 0 评论 -
C++大数相乘
由于数字无法用一个整形变量存储,很自然的想到用字符串来表示一串数字。然后按照乘法的运算规则,用一个乘数的每一位乘以另一个乘数,然后将所有中间结果按正确位置相加得到最终结果。可以分析得出如果乘数为A和B,A的位数为m,B的位数为n,则乘积结果为m+n-1位(最高位无进位)或m+n位(最高位有进位)。因此可以分配一个m+n的辅存来存储最终结果。为了节约空间,所有的中间结果直接在m+n的辅...原创 2018-04-16 14:23:57 · 212 阅读 · 0 评论 -
字符串匹配
1、简单匹配算法:#include <iostream>#include <string> using namespace std;//得到匹配的个数void SerachPat(char* text, char* pat,int &count){ int M = strlen(pat); int N = strlen(text); count = 0...原创 2018-03-27 22:18:48 · 154 阅读 · 0 评论 -
查找算法以及大量数据查找问题
1、顺序查找:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。O(n)int SequenceSearch(int a[], int value, int n){ int i; for(i=0; i<n; i++) if(a[i]==value) ...原创 2018-04-15 09:20:46 · 2325 阅读 · 0 评论 -
hash_map学习
1、原理hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标,hash值)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照...原创 2018-04-15 08:41:26 · 110 阅读 · 0 评论 -
动态规划
1、钢条切割自顶向下int maXt(int a, int b){ if (a>b) { return a; } return b;}int cutRod(vector<int>vec, int n){ if (n==0) { return 0; } /*if (memoziedArray[n-1]>0) { return memozi...原创 2018-04-01 09:23:37 · 178 阅读 · 0 评论 -
基本排序算法实现
1、冒泡比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。void bubble_sort(vector<int>&vec){ for (int i = vec.size() - 1; i >= 0...原创 2018-03-31 22:33:27 · 173 阅读 · 0 评论