![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
独自莫凭欄
。。
展开
-
Dijkstra(迪杰斯特拉)模板
Dijkstra(迪杰斯特拉)算法思想本质来说是一种贪心。每次选择一条最短路径,这样最后得到的就是一条最短路径。举个例子:代码模板(邻接表与邻接矩阵)邻接矩阵版#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int MAXV = 1000;const int INF = 1e9;int n, G[MAXV][MAXV];/原创 2021-08-16 19:40:34 · 482 阅读 · 0 评论 -
基础算法模板(快排,归并排序,二分)
基础算法模板快速排序void quick_sort(int q[],int L,int R){ if(L>=R) return; int i=L-1; int j=R+1; int x = q[L+R>>1]; while(i<j) { while(q[++i]<x); while(q[--j]>x); if(i<j) swap(q[i],q[j]); } quick_sort(q,L,j); quick_sort(q,原创 2021-07-29 21:42:35 · 69 阅读 · 0 评论 -
埃氏筛法与欧拉筛法(素数筛)
埃氏筛法与欧拉筛法(素数筛)暴力解决引入问题首先我们的问题是怎么样把素数筛选出来。如何解决首先我们应该清除的是素数的定义素数:大于等于2的只能被自身和1整除的整数叫素数,又称作质数我们最容易想到的办法就是根据定义来求也就是暴力求解,迭代法bool isPrime(int n){ if(n<=1) return false; for(int i=2;i<n;i++){ if(n % i == 0){ return false; } } return t原创 2021-07-28 17:20:24 · 249 阅读 · 0 评论 -
算法设计与分析课程设计——NEFU
算法设计与分析课程设计——NEFU分治法——大数乘法动态规划贪心算法素数环——回溯法分治法——大数乘法#include <stdio.h>#include <string.h>int main(){ int a[1000],b[1000],c[1000];//准备好三个数组 int lena,lenb,lenc,i,j; char s1[]="12345678900"; char s2[]="98765432100"; lena=st原创 2021-06-11 19:49:56 · 1490 阅读 · 4 评论 -
三个随机算法的简介(舍伍德,拉斯维加斯,蒙特卡洛)
舍伍德,拉斯维加斯和蒙特卡罗算法舍伍德算法拉斯维加斯算法蒙特卡罗方法舍伍德算法很多算法对于不同的输入时间复杂度有较大区别,例如快速排序算法。在这个时候就可以采用舍伍德型概率算法消除这种影响。这算法就是在生成随机数后然后交换数组。舍伍德算法一定会求出一个解,这个解一定正确。但是算法的时间复杂度不会变化 。SherWood算法不是避免了最坏情况发生,最坏情况还是有可能发生,但是,这样可以消除输入对算法性能的影响。拉斯维加斯算法void obtinate(input x,soulution y){原创 2021-05-30 15:26:58 · 4459 阅读 · 2 评论 -
回溯法算法复习伪码—自用
回溯法算法复习伪码—自用装载问题批处理作业调度符号三角形N后问题最大团问题TSP问题(这题刚好写过就直接粘贴了)图的m着色问题01背包(带bound函数)装载问题//最有装载问题#include <iostream>using namespace std;int x[100];//当前解向量int bestx[100];//最优解向量int c=0;//一船载重量int bestw=0;//best载重量int cw=0;//当前重量int res=0;//剩余集装箱重量原创 2021-05-30 14:53:29 · 1545 阅读 · 1 评论 -
TSP旅行售货员问题-回溯法
TSP旅行售货员问题-回溯法最近比较颓废,考试实在是太多了,月考简直了。对转专业的学生太不友好了。一大堆公共课简直消磨了我对编程的热情。今天刚好去听了节一直逃课的晚课,老师找我谈了谈,没有怪我。我也开始思考我目标是什么,我好像很忙,但是没有目标。很盲目仔细思考了一下,我就是喜欢比较简单的生活。有时间做自己的事情,发展一下兴趣爱好。但现在学业都快压得我喘不过气,而且我深知学校教的很多课根本就没有用。但是我还是得去,浪费时间。我还是觉得应该追寻自己的本心。人生是短暂的。连喜欢的事情都做不了就太可悲了。转原创 2021-05-12 22:24:00 · 3747 阅读 · 7 评论 -
0-1背包问题回溯法代码
#include <iostream>using namespace std;int n;int c;int v[100];int w[100];int cw = 0;int cp = 0;int bestp = 0.0;int put[100];int x[100];void backtrack(int i) { int bound(int i); if(i>n) { for(int j=1;j&l原创 2021-05-10 23:02:21 · 972 阅读 · 3 评论 -
蓝桥杯-能量项链
#include<iostream>using namespace std;int n,e[250],f[250][250];int main(){ int i,j,k,mx=0; cin>>n; for(i=1;i<=n;i++) { cin>>e[i]; e[n+i]=e[i]; } for(j=2;j<=n*2;j++) for(i=j-1;i&g原创 2021-04-20 08:23:04 · 133 阅读 · 2 评论 -
0-1背包问题代码
这里用的是老师ppt上面的代码。等有时间写个注释,分析一下。写在这上面方便看#include <iostream>#include <stdio.h>using namespace std;void Knapsack(int *v,int *w,int c,int n,int m[10][10]){ int jMax,j,i; jMax=(w[n]-1)<c?(w[n]-1):c; for(j=0;j<=jMax;j++) .原创 2021-04-12 22:28:10 · 228 阅读 · 2 评论 -
最长公共子序列问题 LCS
最长公共子序列问题问题分析递推公式例子问题分析这里分析了三种情况,主要是为了降低问题规模递推公式例子创建一个二维数组,用来存储递推公式中的计算值。填充完数组。c[ i ] [ j ]=记录序列中最长公共子序列的长度。/*这里所有的想法都是针对一个LCS时候的情况。包括下面的代码*/#include <stdio.h>#include <string.h>#define MAXLEN 100/* *x,y:用来存储字符串的数组原创 2021-04-03 16:55:27 · 117 阅读 · 0 评论 -
NEFU锐格 算法设计与分析第二章 递归与分治
递归与分治实验一6104#include <iostream>using namespace std;int max(int a,int b){ return (a>b)?a:b;}int MaxElement(int a[],int l,int r){ int max1=0; int max2=0; if(l==r) return a[l]; if(l==r-1) return max(a[原创 2021-04-02 16:21:31 · 304 阅读 · 0 评论 -
集合最大元问题 分治递归解决
#include <iostream>using namespace std;int max(int a,int b){ return (a>b)?a:b;}int MaxElement(int a[],int l,int r){ int max1=0; int max2=0; if(l==r) return a[l]; if(l==r-1) return max(a[l],a[r]); el原创 2021-03-29 21:13:31 · 98 阅读 · 0 评论 -
归并排序
归并排序基本概念基本概念如图##就是将一个无序数组分成两部分将这两部分排好序以后再合并,二分以后的数组也采用同样的方法进行排序。这里用到了递归的思想原创 2021-03-28 20:03:05 · 78 阅读 · 0 评论 -
归并排序代码 百度版
#include <stdlib.h>#include <stdio.h> void Merge(int sourceArr[],int tempArr[], int startIndex, int midIndex, int endIndex){ int i = startIndex, j=midIndex+1, k = startIndex; while(i!=midIndex+1 && j!=endIndex+1) {转载 2021-03-28 11:17:01 · 63 阅读 · 0 评论 -
棋盘覆盖问题 递归解决
棋盘覆盖问题问题描述问题描述采用递归分治的策略例如用一个4*4棋盘为例子核心代码其中chessBoard()是棋盘填充函数Board是一个代表棋盘的二位数组在里面填入数字代表填充棋盘填充例子算法分析代码参考#include <iostream>#include <cstring>using namespace std;int tile=1;int Board[100][100];/* * tr : 棋盘左上角格子的行号 * tc原创 2021-03-28 10:46:23 · 272 阅读 · 0 评论