
Data Structure & Algorithm
xianjian_x
kxapiss@163.com
展开
-
动态规划思想:石子合并问题
描述: 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。 规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 开始以为通过贪心算法可能很快解决问题,可是是行不通的。 首先我们可以把这么堆石子看成一列 , 我们假如5堆的石子,其中石子数分别为7,转载 2012-12-03 11:52:40 · 1248 阅读 · 0 评论 -
二分查找位运算——32位整数中寻找第一个为1的位
问题描述 在程序设计中经常会遇到这样一个问题,即在一个32位整数中,从右到左寻找第一个为1的位。这样的问题是很常见的,而面对这样一个问题,一种常见的解法就是逐位的遍历这个整数中的所有位,直到遇到了为1的位。若第一个为1的位出现在高位区域,逐位查找比较的方法会比较浪费时间。 换一种思路 当我们在一个数组中寻找某数的时候,我们有什么办法?简单的顺序原创 2013-01-25 21:08:15 · 2858 阅读 · 3 评论 -
交换排序与冒泡排序
今天在读公司的平台代码的时候发现了一些排序原创 2014-11-13 19:57:24 · 2594 阅读 · 0 评论 -
for 循环和while循环区别
do-while循环 while循环 for循环 死循环选择for还是while C语言提供了好几种循环结构,即while、for和do-while。汇编语言中并没有相应的指令存在,作为替代,将条件测试和跳转组合起来实现循环的效果。大多数汇编器根据一个循环的do-while形式来产生循环代码,即使在实际程序中这种形式用的相对较少。其它的循环会首先转换成do-while形式,然后再编译成机器代码。d原创 2015-11-11 15:59:26 · 10836 阅读 · 0 评论 -
setjmp和longjmp函数使用详解
非局部跳转语句—setjmp和longjmp函数。非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。#include <setjmp.h> int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值void longjmp(jmp_buf env,int原创 2015-11-13 17:14:18 · 1116 阅读 · 0 评论