上一页 1 ··· 12 13 14 15 16
摘要: 贪心算法 一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 所以对所采用的贪心... 阅读全文
posted @ 2010-05-22 09:21 红脸书生 阅读(245755) 评论(6) 推荐(25) 编辑
摘要: 1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的,规模较大的问题都可以使用回... 阅读全文
posted @ 2010-05-22 09:21 红脸书生 阅读(135825) 评论(9) 推荐(39) 编辑
摘要: 一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到... 阅读全文
posted @ 2010-05-22 09:20 红脸书生 阅读(350083) 评论(20) 推荐(48) 编辑
摘要: 分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)&hellip... 阅读全文
posted @ 2010-05-22 09:17 红脸书生 阅读(124580) 评论(9) 推荐(37) 编辑
摘要: 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。  分析这... 阅读全文
posted @ 2010-05-22 09:16 红脸书生 阅读(5880) 评论(1) 推荐(1) 编辑
摘要: 1、空指针表示"未分配"或者"尚未指向任何地方"。它与未初始化的指针不同,未初始化的指针可能指向任何地方。每种指针类型都要一个空指针,而不同类型的空指针的内部可能不尽相同。2、一般给指针赋值0就是将指针设为空指针(等同设为NULL)。但是0作为函数参数,传给指针时需要对0作类型转换。3、可以使用if(p)等同于if(p != 0),但是这种风格不好。4、NULL实际上是一个定义在 stdio.h中... 阅读全文
posted @ 2010-05-22 09:15 红脸书生 阅读(1946) 评论(0) 推荐(2) 编辑
摘要: 1、(1)int i = 7; printf("%d\n", i++ * i++); // 49解释:后缀自加和自减在输出原值以后,对原变量的改变操作并不是马上接着做的。 此处就是在整个表达式都利用原值进行运算之后,才对i做两次自加(2)int i = 7; printf("%d\n", ++i * ++i); // 81解释:++i后就已经把i变成8,再++i后,i变成9, 此时再把两个i(为9... 阅读全文
posted @ 2010-05-22 09:14 红脸书生 阅读(601) 评论(0) 推荐(1) 编辑
摘要: 1、 后缀++和--比*的优先级高,所以*P++与*(P++)等价。它自增P并返回P自增前所指向的变量数值。 前缀++和--与*的优先级相同,但是按从右向左结合。所以++*P与(*P)++等价。2、对于char *p; int a[10]; P = a; 不可以使用((int *)P)++。因为(int *)p只可以作右值。要达到目的可以用P = (char *)((int *)P + 1)... 阅读全文
posted @ 2010-05-22 09:14 红脸书生 阅读(698) 评论(0) 推荐(1) 编辑
摘要: 1、使用哪种整数类型的选择(1)long型:大数值时,大于32,767(+2的15次方)或小于-32,767(-2的15次方)(2)short型:若使用大数组或很多结构2、定义全局变量和函数的最好方式 最好将定义放在某个相关的.c文件中,在头文件.h中进行外部声明,在需要使用的时候,只要包含对应的头文件即可。定义全局变量的.c文件也应该包含该头文件,以便编译器检查定义和声明的一致性。 全局变量和函... 阅读全文
posted @ 2010-05-22 09:12 红脸书生 阅读(960) 评论(1) 推荐(1) 编辑
摘要: 一、内核空间和用户空间Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~ 4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为&ld... 阅读全文
posted @ 2010-05-22 09:10 红脸书生 阅读(1593) 评论(0) 推荐(1) 编辑
上一页 1 ··· 12 13 14 15 16