<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CG的技术博客 &#187; 算法与ACM</title>
	<atom:link href="http://fantaci.org/archives/category/algorithms/feed" rel="self" type="application/rss+xml" />
	<link>http://fantaci.org</link>
	<description></description>
	<lastBuildDate>Tue, 20 Jul 2010 01:53:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[算法]IBM技术的面试题使用递归位运算实现字节位反转(RBIT)</title>
		<link>http://fantaci.org/archives/647</link>
		<comments>http://fantaci.org/archives/647#comments</comments>
		<pubDate>Tue, 27 Apr 2010 08:26:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术分享]]></category>
		<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[面试]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=647</guid>
		<description><![CDATA[字节的中心转置反转，这是一道悲剧的IBM技术面试题，原因很简单，CG没有做对
我把它当成针对位的高低转置题目来做了，结果很简单，直接被拒，悲剧的是，CG
在面试过程中还不住的跟面试官谈论怎么实现高低转置效率最高，等到出来的时候
才被IBM面试官提醒，悲剧。<p><a href="http://fantaci.org/archives/647">[算法]IBM技术的面试题使用递归位运算实现字节位反转(RBIT)</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>字节的中心转置反转，这是一道悲剧的IBM技术面试题，原因很简单，CG没有做对
我把它当成针对位的高低转置题目来做了，结果很简单，直接被拒，悲剧的是，CG
在面试过程中还不住的跟面试官谈论怎么实现高低转置效率最高，等到出来的时候
才被IBM面试官提醒，悲剧。
原题如下：
给定一个任意字节长度的数据（以一个Byte为例</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/647/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[算法]交换回溯算法求一维数组的全排列的算法</title>
		<link>http://fantaci.org/archives/591</link>
		<comments>http://fantaci.org/archives/591#comments</comments>
		<pubDate>Wed, 13 Jan 2010 12:14:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=591</guid>
		<description><![CDATA[还是接着昨天的问题，求一维数组的全排列组合，相比昨天的二维数组，算法相对
要简单得多，运用数据交换和简单的回溯算法即可实现要求，原题为CG最近JAVA考
试题。

原题如下：
求一维数组char a[] = {'1','2','2','3','4','5'}的所有排列组合，如122345
234512等，要求4不在第三位，5、3不能连在一起，JAVA语言实现算法，写出main
函数即可。<p><a href="http://fantaci.org/archives/591">[算法]交换回溯算法求一维数组的全排列的算法</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>还是接着昨天的问题，求一维数组的全排列组合，相比昨天的二维数组，算法相对
要简单得多，运用数据交换和简单的回溯算法即可实现要求，原题为CG最近JAVA考
试题。
原题如下：
求一维数组char a[] = {&#8216;1&#8242;,&#8217;2&#8242;,&#8217;2&#8242;,&#8217;3&#8242;,&#8217;4&#8242;,&#8217;5&#8242;}的所有排列组合，</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/591/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[算法]求二维数组的全排列组合，二位数组的自乘积问题</title>
		<link>http://fantaci.org/archives/588</link>
		<comments>http://fantaci.org/archives/588#comments</comments>
		<pubDate>Wed, 13 Jan 2010 02:11:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=588</guid>
		<description><![CDATA[CG在ETP基地的培训也有一段时间了，这期间也有几次考试，下面将要分享的是最
近一次笔试的考试题目，该题算是JAVA考试的附加题，要求也很简单，下面是原题

二维数组的长度和初始值均由输入确定，如何求出此数组的全排列组合，
即：int a[X][X] = {{X,X,X},...}如下
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
或者是 int a[4][4] = {{1,2,3,4},{4,5,6,7},{7,8,9,10}}
计算a[3][3]的结果如下：
147,148,149
157,158,159
167,168,169
247,248,249
............<p><a href="http://fantaci.org/archives/588">[算法]求二维数组的全排列组合，二位数组的自乘积问题</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>CG在ETP基地的培训也有一段时间了，这期间也有几次考试，下面将要分享的是最
近一次笔试的考试题目，该题算是JAVA语言考试的附加题，要求也很简单，下面是原题
二维数组的长度和初始值均由输入确定，如何求出此数组的全排列组合，
即：int a[X][X] = {{X,X,X},&#8230;}如下
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
或者</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/588/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[算法]操作系统进程通信(预防死锁)算法 Dijkstra银行家算法 C语言实现</title>
		<link>http://fantaci.org/archives/287</link>
		<comments>http://fantaci.org/archives/287#comments</comments>
		<pubDate>Mon, 05 Jan 2009 10:25:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[源代码]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=287</guid>
		<description><![CDATA[银行家算法说明：最早由算法大师 迪杰克斯拉 (Edsger Dijkstra) 提出，银行家算法，顾名思义，它的原理来源于银行系统的存贷款发放管理，即银行（系统）要将一定的款项（资源）贷款（分配）给N个人（进程），当然不需要考虑信用问题('_'),在已经发放了一定的金额后，要使得银行的每一次放款（分配资源）都能使得银行（系统）的运行安全（可以这么理解吧），因此银行家要对现有的资金进行合理分配发放，基本要求要银行必须保留一定的存款不能低于一定的限度（临界资源），同时又不能不放贷款不然会让客户“饿死”（进程饥饿），客户在使用完贷款后要返还（释放）这笔贷款，当然是没有利息的，然后银行要再分配给客户，直到满足客户的多有贷款请求<p><a href="http://fantaci.org/archives/287">[算法]操作系统进程通信(预防死锁)算法 Dijkstra银行家算法 C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今天完成昨天的算法，银行家算法，这个大家如果知道操作系统这门课程的话应该
会明白，昨天一直忙于复习，今天也是，不过下午还是完成了基本调试，调试环境
GCC和TC，现在我把代码奉献给大家
银行家算法说明：最早由算法大师 迪杰克斯拉 (Edsger Dijkstra) 提出，银行家
算法，顾名思义，它的原理来源于银行系统的存贷款</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/287/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>[算法]简单的背包问题递归解法，C语言实现</title>
		<link>http://fantaci.org/archives/285</link>
		<comments>http://fantaci.org/archives/285#comments</comments>
		<pubDate>Sun, 04 Jan 2009 15:00:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=285</guid>
		<description><![CDATA[今天讲点简单的算法，最简单的背包0算法，使用了递归的方法，相信看完代码的
朋友会发现这段代码很熟悉，不过CG提供这些代码的目的只是让全部背包算法的完整
提供地给大家，代码很简单，相信高手一看就懂，这里的背包算法只是考虑了物品的
重量，没有考虑物品的价值，是初学递归算法的朋友必看的代码，高手的话全当复习
一下吧。<p><a href="http://fantaci.org/archives/285">[算法]简单的背包问题递归解法，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今天讲点简单的算法，最简单的背包0算法，使用了递归的方法，相信看完代码的
朋友会发现这段代码很熟悉，不过CG提供这些代码的目的只是让全部背包算法的完整
提供地给大家，代码很简单，相信高手一看就懂，这里的背包算法只是考虑了物品的
重量，没有考虑物品的价值，是初学递归算法的朋友必看的代码，高手的话全当复习
</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/285/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[算法]数据结构算法背包问题解法之递归解法，C语言实现</title>
		<link>http://fantaci.org/archives/283</link>
		<comments>http://fantaci.org/archives/283#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:33:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[数据结构]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=283</guid>
		<description><![CDATA[今天讲背包问题的最后一种解法，递归解法，这种解法也是目前算法教材上讲的基
本解法之一，如果你有一本关于这类算法的书籍，一般都可以找到你想要的算法，
背包问题具体是什么，大家可以参考我的以前的文章，可以直接到下面的相关链接
里面找到，我在最近发布关于背包问题的基本解法，动态规划解法，回溯解法，大
家可以直接参照我的页面链接，如果具体还有问题不懂的话，也非常欢迎大家留言
<p><a href="http://fantaci.org/archives/283">[算法]数据结构算法背包问题解法之递归解法，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>背包问题解法之递归解法
今天讲背包问题的最后一种解法，递归解法，这种解法也是目前算法教材上讲的基
本解法之一，如果你有一本关于这类算法的书籍，一般都可以找到你想要的算法，
背包问题具体是什么，大家可以参考我的以前的文章，可以直接到下面的相关链接
里面找到，我在最近发布关于背包问题的基本解法，动态规划解</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/283/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>[算法]图算法之骑士遍历问题（象棋中马的遍历问题）分析，C语言实现</title>
		<link>http://fantaci.org/archives/279</link>
		<comments>http://fantaci.org/archives/279#comments</comments>
		<pubDate>Sun, 28 Dec 2008 07:46:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=279</guid>
		<description><![CDATA[实现棋盘上任意位置的一个棋子马，使它不重复的走过棋盘上的每一个棋盘格
分析：首先知道马在棋盘是怎么走的，根据国际象棋规则，马在一个起始位置共有8个
可用的行动位置，当然边界方面需要另外考虑，我们的马的行走必须考虑这8种类可
能性，排除不能使用的位置，走可用的位置，当8个位置不可以使用的时，需要考虑
返回上一步，这点有点像图的广度优先遍历相同，当马走完所有位置，同时没有可
用的位置用于行走的时候遍历结束。
<p><a href="http://fantaci.org/archives/279">[算法]图算法之骑士遍历问题（象棋中马的遍历问题）分析，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今天再讲点跟N皇后有关的问题，骑士遍历问题，或者象棋中马的遍历问题，当然
这里的马是国际象棋了，两者有着很多相似点，同时又有很多不同点，主要还是
限制路径的区别，N皇后主要是自由放置只要满足条件就好，马的遍历则跟上下遍历的
路径有关了，主要运用了图算法之深度广度遍历，以及图的建立等算法。
要求：实现棋盘</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/279/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[算法]求质数的算法之Miller-Rabin算法，C语言实现</title>
		<link>http://fantaci.org/archives/277</link>
		<comments>http://fantaci.org/archives/277#comments</comments>
		<pubDate>Sat, 27 Dec 2008 14:43:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=277</guid>
		<description><![CDATA[若n是素数，则对所有1≤a≤n-1的整数a，有a^(n-1)mod n=1;
分析这个定理可以知道，如果一个数是质数，那么它必定满足任意一个整数属于(1，n-1)
范围有a^(n-1)mod n=1，不懂？我们取逆否命题试试看，就是只要存在在(1，n-1)范围中
的整数a 使得a^(n-1)mod n=1不成立，那么这个数就不是素数，相信明白了吧，我们要确定
一个数是否是素数，只要随机生成一系列的数a，如果这些数a使N满足费马小定理的话
那么就可以认定它是素数了<p><a href="http://fantaci.org/archives/277">[算法]求质数的算法之Miller-Rabin算法，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今天讲点比较高级的算法，目的也很简单，求质数，但是应用一种新的算法Miller-Rabin
算法，这是一种利用了概率和费马小定理的算法设计，有点玄乎吧，其实本人也是刚
接触这种算法，这是一种纯数学的解法，如果各位不懂，当学习一下数学也好啊
好，我们往下讲
首先了解基本的数学知识，费马小定理：
若n是素数，则对所有1</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/277/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[算法]背包问题的动态规划算法解答，C语言实现</title>
		<link>http://fantaci.org/archives/275</link>
		<comments>http://fantaci.org/archives/275#comments</comments>
		<pubDate>Fri, 26 Dec 2008 15:52:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[软件技术考试]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=275</guid>
		<description><![CDATA[今天继续背包问题相关解法，主要内容：动态规划
想到这个解法是想到了前几天的一道软考软件设计师考试的下午算法考题，我是参
加者，内容大概如下：通常每种食物往往有不同的营养价值，顾客往往需要一种算
法实现用最少的花费获得最高的营养价值，（食物不重复），现在要求在花费N元钱
获得最大营养价值<p><a href="http://fantaci.org/archives/275">[算法]背包问题的动态规划算法解答，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今天继续背包问题相关解法，主要内容：动态规划
想到这个解法是想到了前几天的一道软考软件设计师考试的下午算法考题，我是参
加者，内容大概如下：通常每种食物往往有不同的营养价值，顾客往往需要一种算
法实现用最少的花费获得最高的营养价值，（食物不重复），现在要求在花费N元钱
获得最大营养价值
分析：相信求解的</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/275/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[算法]背包问题的经典算法和贪心算法解答，C语言实现</title>
		<link>http://fantaci.org/archives/263</link>
		<comments>http://fantaci.org/archives/263#comments</comments>
		<pubDate>Wed, 24 Dec 2008 14:28:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[源程序]]></category>
		<category><![CDATA[算法与ACM]]></category>
		<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.fantaci.org/?p=263</guid>
		<description><![CDATA[背包问题：就是现在有一个容量为PSIZE的背包，同时又有N件item，现在要求将这些
item放入这个背包里面去，要求尽量放一定要求的item（比如按照大小的顺序），又
要求放最多的item或者放的item权值之和要最大<p><a href="http://fantaci.org/archives/263">[算法]背包问题的经典算法和贪心算法解答，C语言实现</a> is a post from <a href="http://fantaci.org">fantaci.org</a> and <a href="http://cg45.cn">cg45.cn</a></p>
]]></description>
			<content:encoded><![CDATA[<p>圣诞前夜讲点比较具有圣诞感觉的算法，背包问题算法，这里我写了经典算法和贪心算法
两种解决方法，因为时间不多，所以给出的数组是已经排序的，因为贪心算法可能要
用得到，经典算法因为是一个一个比较，因此排序也就没有那么重要了，可能两种
算法的最终运行效果一样的，朋友们调试的时候记得修改我给出的测试数组，今</p>]]></content:encoded>
			<wfw:commentRss>http://fantaci.org/archives/263/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
