
算法
进阶er
进阶
展开
-
【排序算法】使数组有序的最少移动步数
给出n个元素,不一定有序,分别按以下要求进行排序:(1)每次只能交换两个元素;(2)每次只能把元素移到第一个位置;分别求出在这两种情况下移动的最少次数第一种情况:原数组逐个与有序序列比对,如果不在自己本该的在的位置上,就交换一次;方法一:#include<bits/stdc++.h>using namespace std;int main(){ int n; wh...原创 2019-04-29 20:29:47 · 6356 阅读 · 0 评论 -
【算法-求素数】算法之-欧拉筛法
素数筛选法之欧拉筛法一般的素数筛选法://prime用来保存得到的素数memset(vis, 0 , sizeof(vis) );vis[1] = 1;int ans= 0,i,j;for(i = 2;i <= n; i++){ if(!vis[i]) prime[ans++] = i; for(j = i*2;j <= n;j += i...原创 2019-03-09 21:22:46 · 1315 阅读 · 0 评论 -
【并查集+优先队列】Welcome Party (并查集+优先队列)
题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=6000#include<bits/stdc++.h>using namespace std;const int N=1005;int n,m;vector<int> t[N];//邻接表int pre[N],root[...原创 2019-04-28 21:45:19 · 295 阅读 · 12 评论 -
【并查集】求连通块的两种方法(DFS,并查集)
问题:给一个图,图中有n个顶点,m条边,求图中连通块的个数。以下有两种方法可用:1.DFS 2.并查集1.用邻接矩阵存图,dfs找连通块数.#include<bits/stdc++.h>const int N=1005;using namespace std;vector<int> t[N];int vis[N]={0};void dfs(int ...原创 2019-04-25 18:02:04 · 4298 阅读 · 3 评论 -
【DP动态规划】最大连续子序列和
题目描述:一看到题目,就是动态规划思想,但是不会用动态规划。(1)自己写的用两重循环实现,呜呜呜#include<stdio.h>int main(){ int n,k=0; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]<0...原创 2019-07-11 17:24:11 · 218 阅读 · 1 评论 -
【Unique函数】Unique函数用法
unique函数属于STL中比较常用函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了(详细情况,下面会讲)。由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。二.函数原型unique函数的函数原型如下:1.只有两个参数,且参数类型都是迭代器:&nbs...转载 2019-07-31 11:57:41 · 3188 阅读 · 0 评论 -
【数据结构】数组之矩阵转置
今天看到一句话:如果我爱自己,就会日出而作,日落而息。这句话足足证明了我很爱自己,哈哈哈,回归正题,总结一下,写的这道数组题。题目描述:将n*n的矩阵顺时针旋转九十度,求新数组(用c++写的)我的思路是开一个新数组,存翻转后的,但是下面这个代码的空间,时间效率明显都比我高,借鉴之。大佬的思路如下:先将矩阵按对角线翻转,之后再上下翻转。class Solution {publ...原创 2019-07-27 12:09:44 · 487 阅读 · 0 评论