上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 24 下一页
摘要: 分治法是最广泛使用的算法设计方法之一,其基本思想:把大问题分解成一些较小的问题,然后由小问题的解方便地构造出大问题的解。 分治法说穿了就是把问题放小,如果被分的问题还是比较大,那么久继续分下去。为了能清晰地反映采用分治策略设计算法的基本步骤,下面用一个称之为抽象化控制的过程来非形式的描述算法的控制流向,下面笔者举例来说明这个问题。void div(p,q) {int n,A[n]; //定义成全程变量int m,p,q; //1≤p≤q≤nif(small(p,q)) return(answer(p,q));else{m = divide(p,q); //p≤m<qreturn (com... 阅读全文
posted @ 2013-11-08 19:18 技术让梦想更伟大 阅读(345) 评论(0) 推荐(0) 编辑
摘要: (这一篇觉得写得很棒,故拷过来以便慢慢看,细细体会,详情请访问http://blog.csdn.net/shenmen123456/article/details/6575647)第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时 阅读全文
posted @ 2013-11-08 01:32 技术让梦想更伟大 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 尽管递归程序在执行时间上往往比非递归程序要付出更多,但有很多问题的数学模型或算法设计方法本来就是递归的,用递归过程来描述它们不仅非常自然,而且证明该算法的正确性也比相应的非递归形式容易得多,因此递归不失为是一种强有力的程序设计方法。 下面来举个例子:已知元素x,判断x是否在a(1:n)中。算法思想:在a(1:n)中检索x,若存在,返回该元素在a[]中的下标,否则,返回0。解决这一问题的递归算法可描述如下:算法4.3 在数组a(1:n)中检索x是否存在int void Search(int a[],int i,int x) {//设a[1..n]和x是全局变量//在a[1..n]中若有元素... 阅读全文
posted @ 2013-11-07 22:20 技术让梦想更伟大 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少。设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间。编译时间与实例特征是无关的,且可假设一个编译过的程序可以运行多次而无需再编译。因此分析程序的时间特性就只需考虑程序的运行时间。令程序P的运行时间为tp(n),其中n是所要求解问题的实例特征。由于编写程序时,影响tp的许多因素还是未知的,所以只能对tp进行估算。由于代码P的主要操作通常包括加、减、乘、除、比较、读、写等,而这些操作的执行时间是可预知的,从而可用下面的公式计算程序P的运行时间: tp(n)=ca*ADD(n... 阅读全文
posted @ 2013-11-07 13:16 技术让梦想更伟大 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 1.大写Ο符号大写Ο符号给出了函数f的一个上限。定义[大写Ο符号]:f(n)=Ο(g(n)),当且仅当存在正的常数c和n0,使得对于所有的n≥n0,有 f(n)≤c*g(n)上述定义表明,函数f至多是函数g的c倍,除非n小于n0。因此,对于足够大的n(如n≥n0),g 是 f 的一个上限(不考虑常数因子 c )。在为函数 f 提供一个上限函数 g 时,通常使用比较简单的函数形式。比较典型的形式是含有 n 的单个项(带一个常数系数)。对于对数函数logn,没有给出对数的基数,是因为对于任何大于1的常数 a 和 b ,都有:logan=logbn/logba所以logan和logbn都有一个相对的 阅读全文
posted @ 2013-11-07 10:57 技术让梦想更伟大 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Niklaus Wirth:Algorithm + Data Structures = Programs 这句话呢,觉得很正确,算法和程序是不同的概念,算法的思想呢有递推,枚举,分治,贪婪,试探法,模拟,这些都是一些基础的算法思想,一个“好”的算法,通常要考虑如下几个目标:􀀹正确性:算法应满足求解具体问题的需求。 对正确性的理解有不同程度1.不含语法错误;2.对几组输入数据能够得到满足规格需求的解;3.对精心选择的典型数据能够得到满足规格需求的解;4.对一切合法的输入数据都能得到满足规格需求的解。􀀹可读性:算法要便于交流,要有助于别人对算法的理解。h 阅读全文
posted @ 2013-11-07 09:56 技术让梦想更伟大 阅读(428) 评论(0) 推荐(0) 编辑
摘要: RealView MDK可以对各种嵌入式处理器的软件开发工具。这么高端,着实很吸引我,ADS12还不知道怎么搞,居然还有这么高端的,但是还是得了解一下唉。洗这个自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20% 。 代码密度:比ADS 1.2编译的代码尺寸小10%; 代码性能:比ADS 1.2编译的代码性能高20%。 这样说来的话,随着realview mdk中文版在中国的使用,那么realview mdk在不久的将来将会取代ADS等软件,值得期待... 阅读全文
posted @ 2013-11-06 02:50 技术让梦想更伟大 阅读(869) 评论(0) 推荐(0) 编辑
摘要: 1.首先要准确的弄清楚指针的含义,指针就是地址。 这个比较容易,前面也有提到,就不多解释了。2.什么叫“指向”? 地址就意味着指向,因为通过地址能找到具体该地址的对象。但是应该注意,并不是任何类型数据的地址都可以存放在同一个指针变量中的,只有与指针变量的基类型相同的数据的地址才能存在相应的指针变量中。例如:int a,*p; //p是int*型的指针变量,基类型是int型float b;p=&a; //a是int型,合法p=&b; //b是float型,类型不匹配3.要深入掌握在对数组的操作中正确使用指针一位数组名代表数组首元素的地址,如:int *p... 阅读全文
posted @ 2013-11-02 10:15 技术让梦想更伟大 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 指针和函数的关系 可以把一个指针声明成为一个指向函数的指针。intfun1(char*,int);int(*pfun1)(char*,int);pfun1=fun1;........inta=(*pfun1)("abcdefg",7);//通过函数指针调用函数。可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 例十三:intfun(char*);inta;charstr[]="abcdefghijklmn";a=fun(str);......intfun(char*s){intnum=0;for(inti=0;i{num+=*s; 阅读全文
posted @ 2013-11-01 18:41 技术让梦想更伟大 阅读(332) 评论(0) 推荐(0) 编辑
摘要: C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数组变量指向了数组的第一个元素的内存地址。一个数组变量是一个常量。即使指针变量指向同样的地址或者一个不同的数组,也不能把指针赋值给数组变量。也不可以将一个数组变量赋值给另一个数组。然而,可以把一个数组变量赋值给指针,这一点似乎让人感到费解。把数组变量赋值给指针时,实际上是把指向数组第一个元素的地址赋给指针。12345678int myarray[4] = {1,2,3,0};int *ptr = myarray;printf("*ptr=% 阅读全文
posted @ 2013-11-01 18:30 技术让梦想更伟大 阅读(359) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 24 下一页