`
cm14k
  • 浏览: 30653 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
文章列表
  正则表达式是一种强大而灵活的文本处理工具。使用正则表达式,我们能够以编程的方式构造复杂的文本模式,并对输入的字符串进行搜索。 简单的来说,正则表达式就是以某种方式来描述字符串。 java从jdk1.4开始支持正则 ...
4)遍历 遍历是链表最经常的操作之一,为了方便核心应用遍历链表,Linux链表将遍历操作抽象成几个宏。 在介绍遍历宏之前,我们先看看如何从链表中访问到我们真正需要的数据项: a)由链表结点到数据项变量 由上面的分析 ...
 一、链表数据结构简介   链表是一种常用的组织数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量, ...
    内核模块是Linux内核向外部提供的一个接口,其全称是 动态可加载内核模块(Loadabkle Kernel Module,LKM)。 Linux 内核之所以提供模块机制,是因为它本身是一个单内核( monolithic kernel )。单内核的最大优点是效率高, ...

求组合数

求组合数 从n个数里面取m个数 (递归实现) /** * Description: * 求组合数(递归法) * 从n个数里面取m个数 算法分析: * 用递归的方法,每选出一个数字之后就把这个数字去掉,用剩余的数字继续递归 * @author cm * */ public class Combination { private int m; private int[] res; //存放结果数组 private int[] arr; //被选择的数组 private int count = 0; private int total = ...
定义一个结构体: #define LENGTH 256 struct book { char title[LENGTH]; char author[LENGTH]; float value; };     初始化方法:   (1)使用一个花括号括起来、逗号分隔的初始化项目列表进行初始化。每个初始化项目必须和要初始化的结构体成员类型相匹配。(类似于数组的初始化) 例如:   struct book java = { "Thinking in Java", "Bruce Eckel", 108.00 ...
为了动态修改XHTML元素,必须能访问XHTML元素,DOM提供了2种方式来访问XHTML元素: --  根据id访问 --  利用节点关系访问 (1)根据ID访问XHTML元素 document.getElementByID(idVal) : 返回文档中id属性值为idVal的XHTML元素 例如: <script type="text/javascript"> function accessById() { alert(document.getElementById("a").innerHTML + "\ ...
与0-1 背包问题类似,所不同的是在选择物品i 装入背包时,可以选择物品i 的一部分,而不一定要全部装入背包. 算法分析: 首先计算每种物品的单位重量的价值, 然后依贪心策略,将尽可能多的单位重量价值最高的物品装入背 ...
0-1背包问题: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的总容量为c。 问:应该如何选择装入背包的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包,因此该问题称为0-1背包问题。   该问题的形式化描述是:  0-1背包问题具有最优子结构性质,可用动态规划法解决。 解法一: 动态规划 算法分析:  1)设m(i, j)是背包容量为j,可选物品为0,1,...,i时0-1背包问题的最优值。  2)递归式  m(i, j) = 0                              ...
装载问题 有一批共n个集装箱要装上两艘载重量分别为c1和c2的轮船,集装箱总重量小于等于c1+c2,要求定一个合理的装载方案可将这n个集装箱装上这两艘轮船。 可以证明,如果一个给定装载问题有解,则采用下面的策略可得到最优的装载方案: 1)首先将第一艘轮船尽可能装满 2)将剩余的集装箱装上第二艘轮船   将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,使该子集中集装箱重量之和接近第一艘轮船载重量c1. 该问题类似于0-1背包问题,可以用动态规划法解决。   用回溯法解装载问题时,用子集树表示其解空间显然是最合适的。   回溯法实现: /* * 装载问题 * 有 ...
问题描述: 有一批集装箱要装上一艘载重量为C的轮船,要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 算法分析: 采用重量轻者先装的贪心选择策略,可产生最优装载问题的最优解。   算法实现: OptinalLoading.java /* * 最优装载 * 有一批集装箱要装上一艘载重量为C的轮船。 * 要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 * 算法分析: * 采用重量最轻者先装的贪心选择策略 * * date: 2010/12/12 * auther:cm * */ import java.util.Ar ...
快速排序(quick sort)是最有效的排序算法之一。 C实现的快速排序算法的函数名为qsort(), qsort()函数对数据对象数据进行排序。其函数原型在头文件stdlib.h中 其原型为: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *,const void *));  第一个参数为指向要排序的数组头部指针,因为任何数据类型的指针可以转化成void类型指针,故qsort()的第一个参数可以指向任何类型的数组; 第二个参数为要排序的元素数量; 第三个参数为数组中数据对象的大 ...

喝汽水问题

 
问题描述: 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水? 这个问题其实是个比较典型的递推问题,每2个空瓶都可以再换1瓶新的汽水,这样一直递推下去,直到最后不能换到汽水为止。 解法一: /* * description: * 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水? * * auther: cm * date:2010/11/28 */ #include <stdio.h> #define MONEY 20 //钱数 #define PRICE 1 / ...
最大子段和问题 解法三: 算法分析: 对于序列a,设j代表当前序列的终点,i代表当前序列的起点 分析:如果a[i]是负的,那么它不可能是最大子段的起点,因为任何包含a[i]为起点的子段都可以通过         用a[i+1]为起点而得到改进。类似的,任何负的子段都不可能是最优子段的前缀(原理相同).         如果在循环中检测到a[i]到a[j]的子段是负的,那么可以推进i. 结论:不仅能把i推进到i+1,而且可以一直推进到j+1.原因:令p为i+1和j之间的任一下标。开始于下标p的任意子段都不大于从下标i开始并包含从a[i]到a[p-1]的子段,         因为a[i ...
最大子段和问题   解法二:分治法 算法分析: 最大子段和可能在三处出现。 1)整个出现在输入数据的左半部 2)整个出现在右半部。 3)跨越输入数据的中部从而位于左右两半部分之中 前两种情况可以递归求解,第三种情况的最大和可以通过求出前半部分的最大和(包含前半部分的最后一个元素) 以及后半部分的最大和(包含后半部分的第一个元素)而得到,前后两部分和相加。 三部分中的最大者,即为最大子段和. 例如: 前半部分        后半部分 4  -3  5  -2    -1  2  6  -2 其中前半部分的最大子段和为6(A1到A3),而后半部分的最大子段和为8(A6到 ...
Global site tag (gtag.js) - Google Analytics