
算法设计与分析
1877296217
这个作者很懒,什么都没留下…
展开
-
最大子段和
给定n个数(可以是负数)的序列,求该序列连续的子段和的最大值。如:1.蛮力法采用三个循环,伪代码如下:时间复杂度:O(n^3)改进:只要两个循环,结果只是需要最大值,不需要记录哪个子区间时间复杂度:O(n^2)2.分治递归法时间复杂度:O(nlogn)源代码:int Aleft(vector<int>& A, int left, int mid){ int max_sum = -INFINITY; int sum =...原创 2021-07-10 18:07:18 · 455 阅读 · 0 评论 -
分治递归—归并排序
将两个序列合并为一个有序序列。分别用i、j指向两个序列的开头,用M指向第一个序列的结尾。用k指向带合并数组的开头。i、j指向的数比较,较小的被放进k指向的数组中,如上图i指向的8比j指向的16更小,所以将8放进数组的第一个位置,然后i++,j不变,继续比较。不断进行比较,直到某个数组被全部遍历完,如下图,就将还没遍历完的数组按顺序放入k中。到此就完成了一个二路归并排序。时间复杂度:O(nlogn)大概思路:对于一个待排序的序列[L,R],选取序列长度...原创 2021-07-10 17:29:44 · 223 阅读 · 0 评论 -
暴力法全排列
采用回溯的思想 代码仅供参考运行环境:VS2019//全排列 暴力#include<iostream>#include<vector>using namespace std;void Pirnt_vec(vector<int> &v){ for (int i = 0; i < v.size(); i++) cout << v[i] << " "; cout << endl;}//全排列.原创 2021-07-10 16:59:31 · 342 阅读 · 0 评论 -
旅行商问题—蛮力法
旅行商问题之蛮力法求解最短路径找到一个从任一顶点出发,经过所有顶点再回到此顶点的最短路径。如图,假设从顶点0开始出发,经过顶点1,2,3再回到顶点0,求解路径最短的方法。暴力法求解,就是将所有情况列举出来,然后选择权值最小的路径为最优解。可以先对顶点进行全排列,然后用计算回路权值的函数将每种情况的权值之和计算出来,再选择其中最小的作为最优解。具体c++代码如下:#include<vector>#include<iostream>using name.原创 2021-07-10 16:25:29 · 1907 阅读 · 0 评论