首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小米进来讲解一下

2012-02-27 
大虾小米进来讲解一下我现在正在学习C算法看了几天,前面几种算法还是好理解,但就是到了回溯,贪心,分治,动

大虾小米进来讲解一下
我现在正在学习C算法
看了几天,前面几种算法还是好理解,但就是到了回溯,贪心,分治,动态规划法.那些书上讲的例题我看不懂
有那位大哥能给我讲解一下C的算法吗,一些或是一种也行,小弟感激不尽;

哦还有,我总觉得,像穷举.递推.递归.回溯这些都好像很相似,好像没多大的差别一样,

还请各位大虾帮忙讲解一下;

[解决办法]
算法是独立于语言的,建议楼主看看数据结构
[解决办法]
算法和代码没有直接关系,
先把算法的思想明白了,
然后再看看实现这个算法的代码 ~
[解决办法]
楼主不用担心,我觉得可以慢慢来,我现在正在学习C++算法
我是这么理解算法的,我认为算法就好比一个特别的函数或者方法
只是算法比普通的函数或者方法有更加多的功能,重要的一点就是在参数的选择上面
我建议楼主可以去买一本C或者C++算法的书来看看
我用的教材是清华大学出版的<<数据结构与算法--C++版>>(第三版)
我觉得这本书不错,作者是美国的Adam Drozdek

[解决办法]
主要的是思想...每种语言都有不同的实现细节,但思想都是一样的....
[解决办法]
说一下穷举.递推.递归.回溯的区别。
穷举最重要的地方在于你知道需要穷举的元素的个数,比如有一个数组a[100],那你就循环100次,对数组中每一个元素进行操作,这就是穷举。
递推则必然有一个递推公式,比如很有名的Fib数列,递推公式就是a[n]=a[n-1]+a[n-2],你也需要循环,将数列中的数一个一个算出来,这就是递推。
递归和回溯是不可分开的两部分,有递归就必然有回溯,只是要看你是想在递归的时候处理还是在回溯的时候处理。具体到语言的话就相当于编写一个函数,在这个函数里要设置递归结束的判断标志,并调用自身函数。
初学者学到递归的时候往往是一个坎,你可以先大致了解递归的思想,以后当你知道编译器在运行函数的时候都会“保存上下文环境”的时候,递归的思想就一目了然了。
[解决办法]
要知道所有这些算法都是建立在数学基础之上的,算法入门推荐”算法导论“,另外要学好
计算机算法,组合数学,具体数学当然必不可少,最权威的算法著作当然是
knuth的 "计算机程序设计艺术 "现以出到第四卷,另外他的学生Sedgewick写的几本
针对几种主流语言的算法描述书籍也是值得一看的。
[解决办法]
其实理解算法还是相对容易的,难的是如何设计算法来解决问题。

更多时候这些基础算法就是一种思维方式,通过他们你可以找到解决不同问题的方法。就像下棋里面的棋谱和定式一样。虽然每盘起都是不同的,但是这些东西可以帮助你举一反三,找打克敌制胜的办法。
[解决办法]
大部分问题其实都是一些典型问题的组合和变形。

通过学习这些基本算法,可以帮助你寻找解决问题的方法。
[解决办法]
去做做acm吧:)

回溯,贪心,分治,动态规划法
穷举.递推.递归.回溯

回溯的话,是一般带有某种尝试性质,用递归比较方便~倒不一定“有递归必有回溯吧”,分治型的递归一般都不大回溯的~

贪心,一般是某种策略

分治,就是把问题分解为字问题了

动态规划(DP) 这个主要是有个最优子结构~一般有某种状态转移~

穷举(枚举),就是暴力做了,没什么技巧,就是模拟

递推,一般有某种递推式,某些DP就是递推~

递推、递归,算程序的写法,是实现方法,不算算法了

某种意义上,DP是一种精神:)

[解决办法]
有专门的计算机算法类书籍,看看C百例,很多面试题都关于算法的
[解决办法]
C只是工具啊 算法靠脑子想出来的哦
[解决办法]
算法的确跟语言和数据结构一点儿关系都没有。
只是一种思想~
[解决办法]
谁说的来着
程序=算法+数据结构

热点排行