个人小结
陌初
我们原本便是陌生人,一如初见。
展开
-
广搜和深搜总结
BFS #include #include #include #include using namespace std; const int maxn=100; bool vst[maxn][maxn]; // 访问标记 int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量 //八方向 int dir[8][2]={0,1,0,-1原创 2015-08-02 15:48:01 · 1162 阅读 · 0 评论 -
常用字符串操作函数
转自:http://blog.sina.com.cn/s/blog_586b6c050100e0kv.html 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include #include int main(void) { char s转载 2017-01-07 15:12:04 · 270 阅读 · 0 评论 -
最大子段和问题
最大子段和的问题相信大家遇到了很多次,碰巧今日我想到了时间复杂度,就在考虑什么情况下可以考虑什么方案呢? 相信最普遍的暴力大家是知道的,今天我们一起来讨论下这个问题吧! 方案一:暴力,可行性❤ 最简单的方法当然是最简单粗暴的啦,三层枚举,时间复杂度为O(n^3)。 可行性范围:n #include using namespace std; #define N 101 int node[原创 2016-12-28 22:14:42 · 3306 阅读 · 0 评论 -
递归小结
众所周知,递归思想在许多算法里尤为重要,尤其是遍历和搜索里,所以总结下: 递归算法的实质是: 把求解问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或子过程)来表示问题的解,通过多次递归调用,最终可求出最小问题的解,然后通过这个最小问题的解返回上层调用,再求出次小问题的解, 再返回上层调用,不断重复,最终得到整个问题的解,完成递归操作。 注意点:原创 2016-04-10 21:51:30 · 595 阅读 · 0 评论 -
枚举小结
一想到枚举,就是暴力,近日在看算法书,感觉厘清思想比较重要,所以来写下一点自己的感想。 例题: 在 a b c d e = f (a~f为0~9)) 中添加+、-、*、/ 号来使得等式成立。 分析该式子,由5个数构成的算式,一共需要填入4个运算符,注意点: 1、除法分母不为0 2、乘除法运算级别优先于加减法 思路: 两个变量 left 和 right 分别保存上次运算结原创 2016-04-10 20:09:38 · 455 阅读 · 1 评论 -
分治小结
分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解 1、解决算法实现的同时,需要估算算法实现所需时间。分治算法时间是这样确定的: 解决子问题所需的工作总量(由 子问题的个数、解决每个子问题的工作量 决定) 合并所有子问题所需的工作量 2、分治法是把任意大小问题尽原创 2016-04-11 22:22:48 · 454 阅读 · 0 评论 -
RMQ和LCA总结
1、 概述 LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j 2、 RMQ原创 2015-09-14 21:59:54 · 584 阅读 · 0 评论 -
并查集总结
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?) 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2015-08-31 09:58:52 · 419 阅读 · 0 评论 -
大数运算总结
大数求和 #include #include #define max 3000 char a[max],b[max],c[max]; int main(){ int i,j,k,s,x,y,z; while(~scanf("%s%s",a,b)){ i=strlen(a)-1; j=strlen(b)-1; k=s=0; while(i>=0||j>=0){ if(原创 2015-08-02 10:37:19 · 462 阅读 · 0 评论 -
背包问题
#include #include #include using namespace std; #define N //件数 int dp[NN],i,k,v; void bag01( int C,int W ) //01背包(费用C,价值W) { for(i=v;i>=C;i--) dp[i]=max( dp[i-C]+W,dp[i] ); } void complete(int原创 2015-08-02 14:28:21 · 360 阅读 · 0 评论 -
string类字符串方法
转自:http://www.cnblogs.com/mr-wid/archive/2013/01/21/2870575.html 一、string类字符串的介绍 在程序设计中, 字符串的使用十分频繁, C语言类型字符串(简称C-串)在使用与字符串的处理上较为复杂, C++为了在程序设计中更加方便的使用字符串特新增了一种string类型的字符串。 string类字符串为STL(St转载 2017-01-07 15:37:03 · 647 阅读 · 0 评论