数据结构与算法实践
文章平均质量分 64
IT面试社区
人生需要与众不同
展开
-
有趣的问题
1.多余的一块钱 有3个人去投宿, 一晚30元,三个人每人掏了10元凑够30元交给了老板。后来老板说今天优惠只要25元就够了,拿出5元命令服务生退还给他们,服务生偷偷藏起了2元, 然后把剩下的3元钱分给了那三个人,每人分到1元。这样,一开始每人掏了10元,现在又退回1转载 2011-07-29 14:17:26 · 557 阅读 · 0 评论 -
牛顿迭代法求方程解
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程转载 2011-11-02 20:51:17 · 3180 阅读 · 0 评论 -
迭代法之解析
军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B = A操作),然后A 再前进占领新的位置,转载 2011-11-02 21:08:30 · 3274 阅读 · 0 评论 -
一道有趣的算法题
给你10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】 初看此题,貌似很难,10 分钟过去了,可能有的人,题目都还没看懂。 举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 0 在转载 2011-11-02 23:28:34 · 710 阅读 · 0 评论 -
输出一种图形
一个画图程序 要求打印出 int i=5;1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9int i=61 2 3 4 5 620 21 22 23 24 719 32 33 34 25 818 31 36 35 26 917 30 29转载 2011-11-02 23:20:26 · 482 阅读 · 0 评论 -
一些蚁群算法源码
Ant Colony Optimization网站上有不少蚁群算法的实现,有C/C++/Java版等:http://www.aco-metaheuristic.org/aco-code/书中提到解决TSP问题在于源码,最基本的C实现:http://iridia.ulb.ac.be/~mdorigo/ACO/downloads/ACOTSP.V1.01.tar.gzC++实现:htt转载 2011-11-27 13:11:31 · 2104 阅读 · 0 评论 -
“蚁群算法”搜寻引擎优化策略
通过正反馈、分布式协作来寻找最优路径,蚁群算法是一种基于种群寻优的启示式搜索算法。蚂蚁是地球上最常见、数目最多的昆虫品种之一,经常孑然一身地呈现在人类的日常生活环境中。意大利学者M.Dorigo,V.Maniezzo等人在察看蚂蚁的觅食习性时发现,蚂蚁总能找到巢穴与食品源之间的最短路径。 经研讨发现,蚂蚁的这种群体合作功效是通过一种遗留在其交往路径上的叫做信息素的挥发性化学物资来进行通信跟和转载 2011-11-28 10:49:02 · 1608 阅读 · 0 评论 -
蚁群算法的特点
1)蚁群算法是一种自组织的算法。在系统论中,自组织和它组织是组织的两个基本分类,其区别在于组织力或组织指令是来自于系统的内部还是来自于系统的外部,来自于系统内部的是自组织,来自于系统外部的是他组织。如果系统在获得空间的、时间的或者功能结构的过程中,没有外界的特定干预,我们便说系统是自组织的。在抽象意义上讲,自组织就是在没有外界作用下使得系统墒增加的过程(即是系统从无序到有序的变化过程)。蚁群算法充转载 2011-11-27 22:01:53 · 25272 阅读 · 0 评论 -
蚂蚁算法原理及其C程序
小小的蚂蚁总是能够找到食物,他们具有什么样的智能呢?设想,如果我们要为蚂蚁设计一个人工智能的程序,那么这个程序要多么复杂呢?首先,你要让蚂蚁能够避开障碍物,就必须根据适当的地形给它编进指令让他们能够巧妙的避开障碍物,其次,要让蚂蚁找到食物,就需要让他们遍历空间上的所有点;再次,如果要让蚂蚁找到最短的路径,那么需要计算所有可能的路径并且比较它们的大小,而且更重要的是,你要小心翼翼的编程,因为程序的错转载 2011-11-28 11:20:33 · 3904 阅读 · 1 评论 -
从蚂蚁觅食浅谈研发过程
我常常想,我们整天工作着,忙碌着,日复一日,年复一年,也看着别人和我们一样在工作着,忙碌着,我们甚至没时间停下来思考,你忙,我忙,他也忙,看起来,我们的团队,我们的部门就像一群忙忙碌碌的蚂蚁。其实,我们和蚂蚁的想象之处还不光在忙碌这点上,我们先来看看蚂蚁觅食的故事。 上图中就是一个蚂蚁觅食的示意图,分别为黄色,黑色,和蓝色的3条线表示蚂蚁可能从巢穴到食物的路径,起初生物学家面感觉很转载 2011-11-29 23:03:28 · 3042 阅读 · 0 评论 -
车站调度问题
题目描述有顺序排列的1,2, 3,…,n节车厢在入站口等待调度。车站设置了一个栈作为缓冲,这样的话只可能进行下列两个操作之一: (1)如果还有车厢在入站口,将最前面的入栈缓冲 (2)将栈顶的车厢驶出车站 给定一个1至n的排列,问其作为出站序列是否合法。注意:入站顺序为1,2, 3,…,n,即1先入栈...,n最后入栈。输入原创 2012-09-13 10:11:27 · 2023 阅读 · 0 评论 -
牛顿迭代法求平方根
牛顿迭代法开方的过程如下:(1)设置初始值为1(2)如果|猜测值*猜测值-X|(3)设置新猜测值为(x/猜测值+猜测值)/2,返回(2)(4)猜测值就是满足要求的x的平方根#include float sqrt(float);float fabs(float);void main(){ float FloatNum; clrscr(); printf转载 2011-11-02 21:00:37 · 1328 阅读 · 0 评论 -
猜数字游戏 -- 简单版
版本一:#include#include#includeint rand1(); //这个函数用于随机一个数void guess(int a,int b); //判断输入的数与答案是否相同void main(){ int a1,b;转载 2011-11-01 21:23:47 · 734 阅读 · 0 评论 -
影响计算机算法世界的十位大师
伟大的智者——Don E.Knuth 中文名:高德纳(1938-)算法和程序设计技术的先驱者。 Oh,God!一些国外网站这样评价他。一般说来,不知道此人的程序员是不可 原谅的。其经典著作《计算机程序设计艺术》更是被誉为算法中“真正”的圣经,像KMP和LR(K)这样令人不可思转载 2011-09-28 20:41:08 · 3914 阅读 · 0 评论 -
自然常数e计算编程
数学e≈1+1/1!+1/2!+1/3!+1/4!+…+1/n!main(){ int n; float delta,t,x,e; e=1.0; x=1.0; n=1; t=1.0;原创 2011-10-12 21:34:28 · 4387 阅读 · 0 评论 -
判断字符串是否对称
用这个函数可以判断 传入的是字符串指针不限制字符查指针int fun(const char * str){ int len = strlen(str); int i; for(i = 0; i { if(*(转载 2011-10-12 22:31:10 · 5703 阅读 · 0 评论 -
斐波那契数列算法分析
斐波那契数列算法分析背景:假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此这般持续下去。每只雌兔在开始繁殖时每月都产下一对兔子,假定没有兔子死亡,在一年后总共会有多少对兔子?在一月转载 2011-10-12 19:44:45 · 629 阅读 · 0 评论 -
斐波那契序列的基本实现
import java.util.Stack;public class StackAndRechurisive { public static void main(String[] args){ int n = 8;转载 2011-10-12 19:51:19 · 499 阅读 · 0 评论 -
整数划分问题
整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1 1 +转载 2011-10-24 08:45:03 · 556 阅读 · 0 评论 -
遗传算法之花朵进化
/*以下代码实现了一个简单的花朵进化的模拟过程。 花朵的种群数量是10,共进化了50代。 通过运行程序,你会发现通过不断的进化,种群的总的适应环境的能力在逐步提高(fitness的值下降)。 实现代码:*/using System;using System.Collections.Generic;using System.Text;namespace GA{转载 2011-11-16 23:56:12 · 728 阅读 · 0 评论 -
java常用代码---遗传算法
import java.util.*;public class Tsp { private String cityName[]={"北京","上海","天津","重庆","哈尔滨","长春","沈阳","呼和浩特","石家庄","太原","济南","郑州","西安","兰州","银川","西宁","乌鲁木齐","合肥","南京","杭州","长沙","南昌","武汉","成都","贵州",转载 2011-11-17 18:23:45 · 9527 阅读 · 3 评论 -
二分查找算法
C语言实现:#include int binsearch(int x, int v[], int n){int low, high, mid;low = 0;high = n - 1;while (low mid = (low + high) / 2;if (x high = mid - 1;else if (x > v[mid])low = mid转载 2011-11-01 20:14:30 · 597 阅读 · 0 评论 -
猜数字游戏——复杂版
猜数字游戏:计算机随机生成没有重复的n个数,用户从键盘输入猜测的数。每猜一次,电脑给出提示信息。如果用户输入的数跟计算机生成的数,数值和位置都完全相等,则胜出。基本功能要求:(假设n=4)1. 随机生成没有重复的4个数。(每个数字在0-9范围内)。2. 用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:转载 2011-11-01 22:13:52 · 2452 阅读 · 0 评论 -
逆序数的求解
/*改进的做法利用分治法,借助归并排序求解逆序数。时间复杂度:O(NlogN)在归并排序的基础做一个修改即可:不是算右边的相对左边的逆序数,这样太过于繁杂而是算左边相当于右边的逆序数,这样可以就在这一个地方做统一处理即当检测到左边大于右边的时候,则所有剩下的左边的数都相对于当前右边的数大,所以逆序数都要加 1 。count += (end - begin + 1); *原创 2012-09-13 10:16:57 · 588 阅读 · 0 评论