
算法
文章平均质量分 67
cighao
个人主页:http://cighao.com
展开
-
分解质因数
原文:点击打开链接原理&&方法把一个合数分解为若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数,分解质因数只针对合数求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式:以24为例:2 -- 242 -- 122 -- 63 (转载 2015-04-26 17:49:31 · 1410 阅读 · 0 评论 -
遗传算法的matlab实现
function [xv,fv]=myGA(fitness,a,b,NP,NG,Pc,Pm,eps)% fitness:待优化的目标函数% a:自变量的下界% b:自变量的上界% NP:种群个体数20-100% NG:最大进化代数100-500% Pc:杂交概率0.4-0.99% Pm:变异概率0.0001-0.1% eps:自变量离散精度% xm:目标函数取最小值时的自变量值原创 2015-11-03 09:22:24 · 2838 阅读 · 2 评论 -
模拟退火算法(MATLAB实现)
function [xo,fo] = Opt_Simu(f,x0,u,l,kmax,q,TolFun)% 模拟退火算法求函数 f(x)的最小值点, 且 l <= x <= u% f为待求函数,x0为初值点,l,u分别为搜索区间的上下限,kmax为最大迭代次数% q为退火因子,TolFun为函数容许误差%%%%算法第一步根据输入变量数,将某些量设为缺省值if nargin < 7原创 2015-10-12 16:47:04 · 21690 阅读 · 0 评论 -
粒子群算法的matlab实现
function [xm,fv]=PSO(fitness,N,c1,c2,w,M,D)% fitness:待优化的目标函数% N:粒子数目% c1,c2:学习因子1,学习因子2% w:惯性权重% M:最大迭代次数% D:问题的维数% xm:目标函数取最小值时的自变量值% fv:目标函数最小值format long;%---------初始化种群的个体-------------原创 2015-11-01 19:02:01 · 3265 阅读 · 1 评论 -
生成1到n的随机排列(C++实现)
主要思想:随机生成一个数组a[],将数组 a[] 排序后,排序后的数组中的数据在原来数组中的位置所组成的一个序列即为1 到 n 的一个随机排列源码:#include"iostream"#include"ctime"#include"cstdlib"#define MAX 20000using namespace std; struct element{ //用来排序的数原创 2015-10-12 12:58:54 · 14693 阅读 · 2 评论 -
利用模拟退火算法求解TSP问题(C++实现)
/* 利用模拟退火算法求解tsp问题 */#include"iostream"#include"ctime"#include"cstdio"#include"cstdlib"#include"cmath"#define MAX 10000#define INF 10000000 #define E 0.000000001 // 迭代误差 #define L 20000 /原创 2015-10-12 20:46:28 · 7133 阅读 · 4 评论 -
Linux下多线程模拟生产者/消费者问题
/*用线程的同步和互斥来实现"生产者-消费者"问题.*//*多生产者多消费者多缓冲区 生产者和消费者不可同时进行*/#include #include //#include #include #include #include #define M 10 // 缓冲数目int in = 0; // 生产者放置产品的位置int out = 0; // 消费者取产品的位置i原创 2015-11-07 20:46:11 · 1479 阅读 · 0 评论 -
粒子群算法求解优化问题(c实现)
#include"stdio.h"#include "math.h"#include "stdlib.h"#include "time.h"#define N 100 //最大粒子数 #define D 10 //最大问题维数 double fitness(double x[],int n);typedef double (*funType)(double [],int n);原创 2015-11-07 22:19:02 · 2552 阅读 · 0 评论 -
利用粒子群算法求解非线性二层规划问题(matlab)
1. 问题示例2. 约束处理 对约束条件的处理主要是用了罚函数的方法。3.符号说明 fbest: 上层函数的最优值(最小值); xbest: 最优的x; ybest: 最优的y;4. 算法步骤 step1. 根据上层规划问题的约束条件产生上层决策变量 x 的初始解 x0,初始化 fbest = INF; s原创 2015-11-07 19:00:18 · 9429 阅读 · 11 评论 -
图论相关算法汇总(二)
一. 最小生成树(Kruscal算法)#include "iostream"#include "cstdlib"#include "cstring"#include "cstdio"#define N 10000#define M 100000using namespace std;struct edge //边集 { int start; //起点 in原创 2015-09-15 19:36:29 · 627 阅读 · 0 评论 -
图论相关算法汇总(一)
一、图的存储结构 这里,着重讲利用邻接表的存储,邻接表的处理方法是这样的: (1)图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过,数组可以较容易的读取顶点的信息,更加方便。 (2)图中每个顶点vi的所有邻接点构成一个线性表,由于邻接点的个数不定,所以,用单链表存储,无向图称为顶点vi的边表,有向图则称为顶点vi作为弧尾的出边表。具体如下图所示原创 2015-09-15 16:17:26 · 3584 阅读 · 0 评论 -
剑指offer名企面试编程题:第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符,例如输入“abcdabc”,则输出“d”#include#includeint main(){ unsigned int h[256]; char s[100]; while(scanf("%s",s)){ memset(h,0,sizeof(h)); char *p=s; while(*p){ h[*p]++;原创 2015-04-23 19:50:06 · 674 阅读 · 0 评论 -
阿里巴巴面试题:求最大的四位数满足是回文数且能分解成两个两位数相乘
首先说下什么是回文数,就是从左往右看和从右往左看是同一个数,例如1221,4554这些都是回文数,而1234这就不是。再解释下什么叫能分解成两个两位数相乘,例如9999肯定是最大的四位回文数,但是很明显不能分解成两个两位数相乘的形式,所以不符合要求,像9009,他是回文数,而且9009=91*99,所以符合要求。下面是代码#include"iostream"using namesp原创 2015-04-22 22:28:08 · 2160 阅读 · 0 评论 -
如何给数百万考生的成绩排序
这个问题是在联系中科大的导师时被导师问到的,那个时候已经通过了中科大的免试研究生的面试,然后联系了一个导师,得知我人在合肥时让我去他办公室聊聊,其实大概就是了解下专业水平吧。问了很多问题,这是其中一个。虽然距离现在已经过去了好几个月,但是突然想到了这个问题,就想把它写下来。下面来说说这个问题吧,忽略内存的问题,假设这些考试成绩是可以一次被装载进内存的。由于数据比较多,哪怕是利用快速排序算法,性能也不原创 2015-12-17 13:46:23 · 1984 阅读 · 0 评论