算法笔记
.Tourist.
这个作者很懒,什么都没留下…
展开
-
算法笔记22:经典100题(转载)
非常好转载 2022-02-19 20:37:34 · 121 阅读 · 0 评论 -
算法笔记21.基础动态规划补充(全)
1.理想收入问题现在已知楚继光手头有某只股票在过去几年中的价格,他试图据此模拟操作以获得理想收入。所谓理想收入是指在股票交易中,以1元为本金可能获得的最高收入,并且在理想收入中允许有非整数股票买卖。 已知股票在第i天每股价格是 V[ i ]元,1 ≤ i ≤ n,求 n 天后的理想收入。输入格式 输入的第一行为 n (1 ≤ n ≤ 100 000)。下面有 n 个实数,依次为今后 n 天的股票价格。这 n 个数可能分布在多行中。输出格式 对于给定的输入,输出 n 天后的理想输入(精确到原创 2022-02-19 20:23:36 · 390 阅读 · 0 评论 -
算法笔记20.最小生成树
https://blog.csdn.net/liu17234050/article/details/104262387?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161432168816780357274553%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161432168816780357274553&am转载 2021-02-26 14:46:04 · 90 阅读 · 0 评论 -
算法笔记19:LCS
https://blog.csdn.net/lxt_Lucia/article/details/81209962?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161432124516780265497701%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161432124516780265497701&b转载 2021-02-26 14:39:19 · 74 阅读 · 0 评论 -
算法笔记18.基础背包问题
1.简单背包问题问题描述:(1)1个背包(2)容量为S(3)N个物体的重量为W1,W2,W3,W4…Wn问题满足:从N件物品中挑选若干件,使得放入背包的重量之和刚好为S输入:S NW1 W2… Wn10 51 2 3 4 5输出:可行则输出这些物品的重量,不可行则输出Fail1 4 5//用的是递归求子集剪枝,不是标准背包问题结构2.0/1背包问题问题描述:(1)1个背包(2)容量为S(3)N个物体的重量为W1,W2,W3,W4…Wn(4)N个物品的价值为C1,C2,C原创 2021-02-26 11:18:53 · 167 阅读 · 0 评论 -
算法笔记17.最长上升(不下降)子序列系列题目
1.最长不下降子序列题目描述:DescriptionA numeric sequence of ai is ordered if a1 < a2 < … <aN. Let the subsequence of the given numeric sequence (a1,a2, …,aN) be any sequence (ai1,ai2, …,aiK), where 1 <=i1 < i2 < … <iK <=N. For example, seque原创 2021-02-26 09:46:00 · 249 阅读 · 0 评论 -
算法笔记16.并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质转载 2021-02-25 10:08:27 · 85 阅读 · 0 评论 -
算法笔记15:最短路
1.迪杰斯特拉算法#include<iostream>#include<algorithm>#include<queue>#include<cstring>using namespace std;int times[501][501];int path[501][501];int vis1[502];int vis2[502];int d1[502];int d2[502];int main(){ int n,m; int s,e原创 2021-02-23 17:35:51 · 84 阅读 · 0 评论 -
算法笔记14:拓扑排序
#include<stdio.h>#include<stdlib.h>int map[501][501];int main(){ int stack[502]; int size = 0; int topo[501]; int indegree[501]={0}; int n,m,s,e,l; int top; int num = 0; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) {原创 2021-02-23 17:26:47 · 70 阅读 · 0 评论 -
算法笔记13:BigNum高精度模板
#include<iostream> #include<string> #include<iomanip> #include<algorithm> #include<bits/stdc++.h>using namespace std; #define MAXN 9999#define MAXSIZE 10#define DLEN 4 class BigNum{ private: int a[500]; //??原创 2021-02-23 17:16:55 · 155 阅读 · 0 评论 -
算法笔记12:STL:栈(stack)、队列(queue)和优先队列(priority_queue)
1.stack#include<stack>stack<int>s;s.empty()// 堆栈为空则返回真s.pop()// 移除栈顶元素s.push(4)// 在栈顶增加元素4s.size() //返回栈中元素数目s.top()// 返回栈顶元素2.queue#include<queue>queue<int>q;q.push()q.pop()q.front()q.back()q.empty()q.size()3.pr原创 2021-02-23 16:39:25 · 93 阅读 · 0 评论 -
算法笔记11.STL:map
map映照容器一.有关map的操作1.初始化操作map<string, int> myMap;myMap["messi"] = 1;myMap["jams"] = 2;myMap["jack"] = 3;2.插入操作pair<string, int> value("json", 4);myMap.insert(value);3.输出集合中的元素for(map<string, int>::iterator iter = myMap.begin()原创 2021-02-23 16:25:29 · 65 阅读 · 0 评论 -
算法笔记10.STL:set
1.set使用方法://set使用方法set<int>s;s.begin() //返回set容器的第一个元素s.end() //返回set容器的最后一个元素s.clear() //删除set容器中的所有的元素s.empty() //判断set容器是否为空s.max_size() //返回set容器可能包含的元素最大个数s.size() //返回当前set容器中的元素个数2.set的迭代器与两道题目(1原创 2021-02-23 15:45:42 · 58 阅读 · 0 评论 -
算法笔记9.STL:vector
1.vector的初始化#include<vector>;//vector 的初始化:可以有五种方式,举例说明如下: vector<int> a(10); //(1)定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 vector<int> a(10,1); //(2)定义了10个整型元素的向量,且给出每个元素的初值为1 vector<原创 2021-02-23 15:25:37 · 51 阅读 · 0 评论 -
算法笔记8.递归排列与组合
(1)排列#include<stdio.h>#include<stdlib.h>int a[1000];int b[1000];int n;void print(){int i;for(int i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");}void dfs(int step){int j;if(step==n+1){print();return ;}for(j=1;j<=n;j++){原创 2021-02-22 15:47:38 · 44 阅读 · 0 评论 -
算法笔记7.KMP算法
//KMP algorithm Ye Zhuang#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str1[501]; char str2[501]; int next[501]; gets(str1); gets(str2); int x,y,i,j; x = strlen(str1); y = strlen(str2); i = 0; j =原创 2021-02-22 15:36:15 · 112 阅读 · 0 评论 -
算法笔记6.BF算法
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int x,y; int i,j; char s1[501]; char s2[501]; gets(s1); gets(s2); x = strlen(s1); y = strlen(s2); for(i=0,j=0;i<x&&j<y;i++,j++) { if(s1[i]==s2[原创 2021-02-22 15:33:26 · 92 阅读 · 0 评论 -
算法笔记5.堆排序
//Heap Sort #include<stdio.h>#include<stdlib.h>void HeapAdjust(int r[],int s,int m){ int rc = r[s]; for(int j=2*s;j<=m;j*=2) { if(j<m&&r[j]<r[j+1]) ++j; if(rc>=r[j]) break; r[s]=r[j]; s = j;原创 2021-02-22 15:30:10 · 55 阅读 · 0 评论 -
算法笔记4.希尔排序
//ShellSort#include<stdio.h>#include<stdlib.h>int a[101];int n;void ShellInsert(int a[],int dk){ int temp,j; for(int i=dk+1;i<=n;i++) if(a[i]<a[i-dk]) { temp = a[i]; for(j = i-dk;j>0&&a[j]>temp;j-=dk) a[j+dk]原创 2021-02-22 15:28:51 · 55 阅读 · 0 评论 -
算法笔记3.三大排序
(1)选择排序//SelectionSort#include<stdio.h>#include<stdlib.h>int a[101];int n;void SelectSort(int a[],int n){ for(int i=1;i<n;i++) { int k = i; for(int j=i+1;j<=n;++j) { if(a[j]<a[k]) k = j; if(k!=i) { int te原创 2021-02-22 15:27:23 · 61 阅读 · 0 评论 -
算法笔记2.快速排序
//BInsertSort#include<stdio.h>#include<stdlib.h>int a[10000001];int n;int Part(int a[],int low,int high){ int temp = a[low]; int p = a[low]; while(low<high) { while(low<high&&a[high]>=p) --high; a[low] = a[high]原创 2021-02-22 15:22:59 · 51 阅读 · 0 评论 -
算法笔记1.归并排序
#include "stdio.h"#define MAX 100int is1[MAX],is2[MAX];void merge(int low,int mid,int high){ int i=low,j=mid+1,k=low; while(i<=mid&&j<=high) if(is1[i]<is1[j]) is2[k++]=is1[i++]; else is2[k++]=is1[j++]; while(i原创 2021-02-22 15:09:41 · 67 阅读 · 0 评论