![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++常用算法
irastra
这个作者很懒,什么都没留下…
展开
-
swap交换函数的三种实现
现在有两个整形变量需要交换值.原创 2014-07-25 22:46:05 · 2387 阅读 · 0 评论 -
高效率集合BitSet
1,有一个连起来的项链,每个珠子都有一种颜色(所有颜色共有m种),珠子共有n个,需要给出一个最小的长度l,从某个位置开始连续l个,包含了所有的m种颜色。从任意位置断开后变成链,处理时最后求余在化为圆形。最简单的方法枚举,但是需要O(n3)因此考虑.color[x],为地x个珠子的颜色。若记s(j,i)为起点为j,长度为i的颜色集合。ans[j][i]为从j长度为i的颜色个数原创 2015-10-23 23:04:04 · 1238 阅读 · 0 评论 -
变换的灯
有N个灯放在一排(编号从1到m),如果对灯执行n此i操作(i = 1,2,3....n),对于一次i操作的定义如下,将一次i操作定义为,(将编号为i的倍数的灯进行翻转,开到关,关倒开),那么如果开始所有灯都是关闭的,那么进行n次操,之后,会有多少个灯是打开的。我的思路:解法一:模拟.#define max_n 10000001int vis[max_n]; int solve_fi原创 2015-10-23 13:20:12 · 669 阅读 · 0 评论 -
(模板)线段树set(a,b) query(a,b)
#include #include #define MAX_N 100000#define INF (-(MAX_N))typedef float Type;int ol,or;Type _min,_max,_sum,v;Type sumv[MAX_N],minv[MAX_N],maxv[MAX_N],addv[MAX_N],setv[MAX_N];Type max(Type原创 2015-04-04 11:00:47 · 764 阅读 · 0 评论 -
(模板)平衡二叉树
#include #include #include typedef struct t_type{ int hight; int blance; int val; struct t_type * lchild; struct t_type * rchild;}node;node * clue[200];in原创 2015-03-06 13:02:46 · 864 阅读 · 0 评论 -
自然数质数(筛法求质数)分解个数母函数方法初探.
任何一个大于1的自然数n都可以携程都可以写成若干个大于等于2小于等于n的质数之和,并不只有一种形式.例如9就有四种形式.9 = 2 + 5 +2 = 2 + 3 +2 +2 = 3 + 3 +3= 2+ 7方法一:直接进行搜索(输入限制很大).方法二:构造下列母函数.G(x) = (1+x^2+x^4+x^6+.....x^(x/2)) (1+x^3+x^6+x^9+...原创 2015-03-23 20:53:32 · 884 阅读 · 0 评论 -
有序(循环)数组查找元素-二分查找法
1.我们将一个有序数组(n个元素)从i(号位置)之前放到n位置之后形成的数组为有序循环数组。2.数组 1 2 4 5 6 7 8 的有序循环数组有 1 2 4 5 6 7 8 (元数组是位置0处的有序循环数组). 2 4 5 6 7 8 1 4 5 6 7 8 1 2 5 6 7 8 1 2 4 6 7 8 1 2 4 5 7 8原创 2015-03-22 16:56:21 · 3788 阅读 · 1 评论 -
分治理法求数组最大值
现在给出一个n个元素的书组原创 2014-09-30 23:09:09 · 1904 阅读 · 0 评论 -
浅谈"对抗搜索"的alpha-beta 剪枝
1.对抗搜索在对弈中经常会遇到可能性很多而有没有规律的情况,这时可以对所有后续情况进行分析,选择当前对自己最有利的一中情况.如果两方A,B进行对弈,计算现在局面的分数(对A和B),如果两方处于对立,那么一定在一方分数高的同时另一方分数会低(每方都希望局面对自己有利),因此此时进计算A的分数,B的分数可以由A的分数反应(A高B低,A低B高),如果两个人足够聪明(知道N局以后可能的原创 2015-03-07 21:23:11 · 3819 阅读 · 0 评论 -
数字最小k分割(算法上机)
对于一个整数x,的最小k(分割次数)分割,是在(k(注意:对数字x的分割,对于任意分割位置两端必须有数字,即分割所在位置在数字之间,因为在数字两端相当于没有分割,并且任意数x的0,分割>他的k分割K>1证明:此时存在数字数字:a..b..a*10^x+b*10^y > (a*(10^(x-y)) * b*10^y (a*(10^(x-y)) +1> (a*(10^(x-y原创 2014-12-02 11:21:16 · 869 阅读 · 0 评论 -
c语言用rand() 函数,实现random(int m)
函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。原创 2014-09-30 22:52:15 · 16837 阅读 · 0 评论 -
静态栈_傻瓜式寻路
#include#include#include "windows.h"#define MAXSIZE 100typedef struct mapdatax{ int x; int y; int r;}posdata;typedef struct{ posdata pos_lsit[MAXSIZE]; int top;}SeqStack;int print_error(原创 2014-06-16 16:40:12 · 585 阅读 · 0 评论 -
详细解说kmp,第五届蓝桥杯决赛第三题
题目就是补全代码.此处主要简单证明且叙述kmp原理.prefix[j] 存放当模式串匹配到j,位置与主串位置i,存在s[i]!=p[j]时,进行性下次操作只需要使得下次j=prefix[j],在与i,进行匹配.因此prefix[i]数组中存放这样的整数k使得有模式串p[1 to k-1] 与 p[(i-1)-(k-1)+1 to (i-1)] 完全匹配时的k如最上面图中的prefi原创 2014-06-16 16:40:32 · 875 阅读 · 0 评论 -
poj1050最大子矩阵和
这篇是看了别人的报告写的,就当是屡屡思路原创 2014-09-29 21:25:06 · 855 阅读 · 0 评论 -
c语言实现lower_bound和upper_bound
lower_bound(int A*,int l,int r,int val);对于有序数组求职为val的元素插入位置,第一个出现该元素的位置.分析:等待插入的元素是val,有序数列是A[](此处按照升序排列),寻找的范围是[l,r];如果查找区间只存在一个元素 l==r;时.只需要判断val>A[l]时返回插入下标是l+1:否则val否则如果存在lr为不合法的情况原创 2014-06-18 00:54:16 · 3320 阅读 · 0 评论 -
笔试编程总结
1.现在将,有颜色的球放在一条直线上,球的颜色只有红色,黑色,并且每种球都是无限多的。如过现在一行球共有n个,那么没有三种相同颜色球相连的共有多少种?当前球数为n时。An 前两种球颜色相同。Bn 前两种球颜色不同。我的思路:递推A3 = B3 = 2;An = B(n-1)(n>3);Bn = A(n-1) + B(n-1);#include using name原创 2015-10-23 22:40:02 · 742 阅读 · 0 评论