
算法
文章平均质量分 71
一名路过的小码农啊
逆风的方向更适合飞翔,不怕万人阻挡,只怕自己投降
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
根据筛法求素数,然后求最大公约数
#include #include #includeusing namespace std;const int maxlength=1000;bool flag[maxlength];int a[maxlength];int k=0;void getprime(int maxn){ memset(flag,true,sizeof(flag)); for(int i原创 2016-09-02 12:39:43 · 496 阅读 · 0 评论 -
nyoj 76超级台阶
描述有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法。输入输入数据首先包含一个整数n(1输出对于每个测试实例,请输出不同走法的数量。样例输入223样例输出12分析一下就可以了,在第1级的时候是0,这个得注意,有点像斐波那契#include#in原创 2017-09-04 21:14:25 · 250 阅读 · 0 评论 -
南阳oj36 最长公共子序列 动态规划
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入第一行给出一个整数N(0原创 2017-09-04 18:41:10 · 293 阅读 · 0 评论 -
冒泡排序
#include#include#includeusing namespace std;void bubblesort(int list[],int n){ for(int i=0;i<n;i++){ for(int j=0;j<n-i-1;j++){ if(list[j]>list[j+1]){ swap(list[j],list[j+1]); } } }原创 2017-08-21 20:44:17 · 231 阅读 · 0 评论 -
01背包跟完全背包问题
01背包是指有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。这种问题不像贪心,是不能分割的,因为刚做完一道可以分割的,所以想来整理一下区别 L2-003月饼 这是一道可以分割的,用的是贪心算法f[i][j]=max{f[i-1][j],f[i-1][j-c[i]]+w[i]}把这个过程原创 2017-08-06 19:03:59 · 507 阅读 · 0 评论 -
优先队列优化的迪杰斯特拉算法
#include #include #include #include #include #include #include #include #include using namespace std;const int NI = 100005;const int INF = 0x3f3f3f3f;struct node { int num, dis; no原创 2017-08-13 19:54:08 · 1492 阅读 · 0 评论 -
选择排序
#include#include#include>using namespace std;///选择排序//每次选出最小的元素跟序列的相应元素进行交换 int main(){ int list[6]={0,34,2,45,-2,3}; for(int i=0;i<6;i++){ int min=i; for(int j=i+1;j<6;j++){ if(list[j]原创 2017-08-13 19:53:30 · 194 阅读 · 0 评论 -
搜索dfs
#include#includeusing namespace std;#define NI 99999999int s[20][20];int sum,mid;int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};bool visited[20][20];int ans=INT_MAX;int n,m;void dfs(int x,int y,i原创 2017-08-13 19:53:00 · 243 阅读 · 0 评论 -
快速排序
#include#includeusing namespace std;//快速排序,选取一个基准,先把它放到最右边,两个指针,分别从左到右,从右向左, 如果大就交换,一直到low>high,//交换相应的位置和基准 void quicksort(int list[],int low,int high){ int left=low; int right=high; int pivo原创 2017-08-13 19:51:30 · 193 阅读 · 0 评论 -
后序中序求层序
#include #include #include #include #include #include #include #include #include using namespace std;const int NI = 50;int n, post[NI], in[NI];struct node { int num; struct node *l原创 2017-08-13 19:50:25 · 364 阅读 · 0 评论 -
归并排序
#include#includeusing namespace std;//归并排序 申请额外的空间存放两个子序列归并之后的结果,设置两个指针分别指向两个已经//排好序的元素的第一个位置,然后比较两个元素,将较小的元素放入到已经申请的额外的空间中//并将位置向后移动一格 void merge(int list[],int tmp[],int left,int mid,int right原创 2017-08-13 19:49:48 · 194 阅读 · 0 评论 -
二叉搜索建树及相应的函数
#include #include #include #include #include #include #include #include using namespace std;struct node { int num; struct node *left; struct node *right;};struct node *CreatNode原创 2017-08-13 19:49:13 · 245 阅读 · 0 评论 -
堆排序
#include#includeusing namespace std;//堆排序, 利用最大堆,不需要将堆顶元素输出,只需要将它与堆的最后一个元素进行互换 void adjust(int list[],int i,int n){ int child;int temp; for(temp=list[i];(2*i+1)<n;i=child){ child=2*i+1; if(c原创 2017-08-13 19:48:21 · 200 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和转载 2017-08-18 18:07:37 · 412 阅读 · 0 评论 -
stl 应用 set
#include#include#include#include#include#include#includeusing namespace std;set dict;int main(){ string s,buf; while(cin>>s) { for(int i=0;i<s.length();i++) {转载 2017-02-05 16:55:28 · 245 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra) 带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小转载 2017-02-05 13:46:22 · 376 阅读 · 0 评论 -
【算法学习】最优二叉查找树(动态规划)
一、什么是最优二叉查找树最优二叉查找树:给定n个互异的关键字组成的序列K=,且关键字有序(k1图一显示了给定上面的概率分布pi、qi,生成的两个二叉查找树的例子。图二就是在这种情况下一棵最优二叉查找树。概率分布:i01234转载 2016-10-31 20:18:11 · 836 阅读 · 0 评论 -
nyoj 79 拦截导弹
描述某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。输入第一行输入测试数据组数N(1接下来一行输入这组测试数据共有多少个导弹m(1接下来行输入原创 2017-09-04 21:41:53 · 273 阅读 · 0 评论