摘要:
本文转载于http://blog.csdn.net/effective_coder/article/details/8697789。一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素 阅读全文
摘要:
在C语言中,数值常数可以是3中形式: (1)在数值前面加0表示的是8进制数据; (2)在数字前面加0x表示的是16进制数; (3)在数值前面什么也不加,表示的是10进制数值。 目前C语言规定的整数数值只能用这3中表示方法。 例如,我们相对某一个变量a赋值为48,则可以是以下几种形式: int a = 48; int a = 060; int a = 0x0011000... 阅读全文
摘要:
位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。同时需要尤其指出的是:位运算都是针对各个数值的补码进行位运算操作,因此,对负数进行位运算也是可以的。 补码的求解方式为:正数的补码就是其本身,负数的补码是对除了符号位(最高位)以外的其它各个位进行按位取反操作,然后再对结果进行加1,即得到负数的补... 阅读全文
摘要:
本文还来不及看,暂存于此。该算法是目前号称最快的八皇后问题求解算法。 核心代码如下: void test(int row, int ld, int rd) { int pos, p; if ( row != upperlim ) { pos = upperlim & (~(row | ld | rd )); ... 阅读全文
摘要:
八皇后问题是在8*8的棋盘上放置8枚皇后,使得棋盘中每个纵向、横向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一个可行解如图所示: ... 阅读全文
摘要:
1.一维数组初始化 对于一维数组,其初始化有一个错误的观点是:一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 数组可以用一个列值来初始化,例如 int v1[] ={1,2,3,4}; char v2[]={'a','b','c',0}; 当数组定义时没有... 阅读全文
摘要:
一、基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。 要点: 1、C语言函数可以递归调用。 2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。 二、递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的... 阅读全文