- 博客(19)
- 收藏
- 关注
原创 C++ 暴力匹配
class ViolenceMatch{public: int violencematch(string str1, string str2) { vector<char>s1; vector<char>s2; for (int i = 0; i < str1.size(); i++) { s1.push_back(str1[i]); } for (vector<char>::iterator it = s1.begin();.
2021-12-20 17:01:11
852
原创 C++ KMP算法
通过一个prefix数组,用来保存最长公共前后缀的长度,这样在每次回溯时,可以减少回溯的长度。text:用来匹配的字符数组pattern:要查找的字符数prefix:匹配值(默认prefix[0]=0)pattern A B A B C A B A A text A B A B A B A B C A B A A B 对于pattern来说:AB的最大
2021-12-20 16:58:02
964
原创 C++前序中序后序二叉树+遍历+删除
class HeroNode{public: HeroNode(int id, string name) { this->id = id; this->name = name; } //前序遍历 void preOrder() { cout << this->id << " " << this->name << endl; ...
2021-12-08 16:47:24
277
原创 C++ 哈希表
class Emp{public: Emp(int id, string name) { this->id = id; this->name = name; } int id; string name; Emp *next=nullptr;};class EmpLinkedList{public: EmpLinkedList(){} void add(Emp *emp) {...
2021-12-08 10:10:14
680
原创 C++斐波那契查找(黄金分割法)
//斐波那契查找(黄金分割法) ------ 有序数组vector<int> fib(){ vector<int>f; f.push_back(1); f.push_back(1); for (int i = 2; i < 20; i++) { f.push_back(f[i - 1] + f[i - 2]); } for (int i = 0; i < f.size(); i++) {...
2021-12-07 16:33:44
391
原创 C++插值查找
//插值查找 ------ 有序数组 int InsertValueSearch(vector<int>arr, int left, int right, int val){ //cout << "插值查找被调用" << endl; if (left > right||val<arr[0]||val>arr[arr.size()-1]) { return - 1; } int mid = ...
2021-12-07 15:22:28
331
原创 C++ 二分查找(递归+非递归)
//二分查找 ------ 有序数组 ------ 递归+非递归//非递归int BinarySearch_1(vector<int>arr,int val){ int left = 0; int right = arr.size() - 1; while (left < right) { int mid = (left + right) / 2; if (arr[mid] > val) {...
2021-12-07 10:27:04
687
原创 C++ 基数排序 桶排序
//基数排序 80000-0.017s//是使用空间换时间的经典算法void radixSort(int arr[],int length){ int index = 0; int **Arr2D = new int*[10]; //定义一个二维数组作为桶 for (int i = 0; i < 10; i++) { Arr2D[i] = new int[length]; } int ArrElementCount[10] ...
2021-12-06 21:43:37
122
原创 C++归并排序
//归并 O(n*log(n)) 80000-0.031s//先分后治void Merge(int arr[], int left, int mid, int right, int temp[]){ int l = left; int r = mid + 1; int t = 0; while (l <= mid && r <= right) { if (arr[l] <= arr[r]) {...
2021-12-06 21:32:08
82
原创 C++插入排序法
//插入排序 O(n2) 80000-9.869s//把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表只包含一个元素,即数组的第一个元素,无序表中有n-1个元素//无序表中取出第一个元素,把它依次与有序表中元素进行对比,插入到有序表中适当位置,成为新的有序表//----------------------------------------------------------------------------------------------------------------...
2021-12-06 21:30:56
95
原创 C++选择排序
//选择排序 O(n2) 80000-14.497s//选出arr[0]~arr[n-1]中最小值,与arr[0]交换//选出arr[1]~arr[n-1]中最小值,与arr[1]交换//选出arr[2]~arr[n - 1]中最小值,与arr[2]交换//…………void SelectSort(int arr[], int length){ for (int i = 0; i < length; i++) { int MinIndex =...
2021-12-06 21:29:32
779
原创 C++冒泡排序法
//冒泡排序 O(n2) 80000-36.03s//排n个数,一共进行n-1次排序,第一次排完序最大的数在最末尾(n-1),第二次排完序最大数在倒数第二个(n-2)…………//优化,加flag,如果某一次排序没有位置的交换,直接退出void BubbleSort(int arr[],int length){ int temp = 0; bool flag = false; for (int i = 0; i < length-1; i++) { ...
2021-12-06 21:27:57
274
原创 C++ 把int转换成string
#include<string>#include<sstream>int main(){int i;string s;ostringstream os;os<<i;s=os.str();system("pause");return 0;}
2021-12-06 21:25:56
196
原创 C++字符串分割(vector+list)
(适用于一个分隔符)vector<string> Split(string &s, string &c){ vector<string>v; int pos1, pos2; pos2 = s.find(c); pos1 = 0; while (true) { if (pos1==s.length()-1) { break; } ...
2021-11-30 10:29:51
890
1
原创 栈【链表】C++
class List{public: List(){} List(int num) { this->Data = num; } int Data; List *next;};class ListStack{public: void CreatListStack() { head->next = nullptr; } bool isEmpty() { ...
2021-11-28 15:54:17
145
原创 栈【数组】C++
class ArrayStack{public: ArrayStack(int maxsize) { this->MaxSize = maxsize; this->Stack = new int[sizeof(int)*this->MaxSize]; } bool isFull() { return this->Top == this->MaxSize - 1; } ...
2021-11-28 15:15:43
424
原创 单链表增删改查C++
class HeroNode{public: HeroNode(){} HeroNode(int number,string name,string nickname) { this->No = number; this->Name = name; this->nickName = nickname; } int No; string Name; string nickName;...
2021-11-28 10:50:34
242
原创 约瑟夫环C++
class BoyNode{public: BoyNode(int no) { this->no = no; } void SetNo(int no) { this->no = no; } int GetNo() { return this->no; } void setNext(BoyNode *Node) { next = N...
2021-11-28 10:45:45
634
翻译 模型预测控制 MPC QP Solver
模型预测控制器QP求解器将线性MPC优化问题转化为一般形式的QP问题X是解向量。H是Hessian矩阵。当预测模型和调优权重在运行时不发生变化时,这个矩阵是常数。A是一个线性约束系数矩阵。当您的预测模型在运行时不改变时,这个矩阵是常数。B和f是向量。在每个控制间隔开始时,控制器计算H、f、A和b。如果H或A是常数,控制器检索它们的预先计算值。Built-In QP Solvers模型预测控制工具箱™软件支持解决QP问题的两种内置算法。两个求解器都要求海森矩阵是正定的﹡Ac..
2021-05-20 09:24:04
5233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人