Archive

Archive for the ‘算法研究’ Category

iOS开发之Objective-c几种不同的随机数算法(arc4random,random,srandom)

June 18th, 2012 No comments

Objective-c并没有直接提供随机数据生成的函数或方法,不过我们可以直接利用c的各种随机算法
以下是几种常见的随机数算法的使用,可以参照以下头文件
stdlib.h

arc4random
不需要随机种子,在调用时自动生成随机种子
返回[0,X)的集合
int value = arc4random() % x;
返回[1,X]的集合
int value = (arc4random() % x) + 1;

Read more…

iOS开发之Objective-C中BASE64编码加密解密的使用

June 18th, 2012 No comments

BASE64使用常用的URL密文编码方式,用于在HTTP环境下传递较长的标识信息。采用Base64编码不仅比较简短,同时也具有不可读性。

以下地址是加密的迅雷专用下载地址,采用的是该编码。
如thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==

ios中使用BASE64进行加密和解密的方法也很简单,可以直接用google-toolbox-for-mac的GTMBase64.h来实现.

google-toolbox-for-mac的对应地址如下:
http://code.google.com/p/google-toolbox-for-mac/

当中可以找到很多你需要的帮助对象,但是这里我们只使用以下3个文件
GTMDefines.h
GTMBase64.h
GTMBase64.m

Read more…

使用递归位运算实现对字节的中心转置反转

June 14th, 2012 No comments

字节的中心转置反转,这是一道的IBM技术面试题,供参考
原题如下:
给定一个任意字节长度的数据(以一个Byte为例),要求实现数据的位中心翻转,
也就是数据的对称位数据交换,比如:
1010 1100 -> 0011 0101
1111 1111 -> 1111 1111
0000 0000 -> 0000 0000
1111 0000 -> 0000 1111
解题思路也很简单,只要使用位运算实现以下的位变化即可,但是需要考虑到其他
位的情况,注意运算符的使用即可,IBM不愧是IBM
11 – > 11
00 – > 00
10 – > 01
01 – > 10

Read more…

Categories: 算法研究 Tags: ,

求二维数组的全排列组合,二位数组的自乘积问题

June 14th, 2012 3 comments

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
…………

Read more…

Categories: 算法研究 Tags: ,

[算法]操作系统进程通信(预防死锁)算法 Dijkstra银行家算法 C语言实现

January 5th, 2009 9 comments

今天完成昨天的算法,银行家算法,这个大家如果知道操作系统这门课程的话应该会明白,昨天一直忙于复习,今天也是,不过下午还是完成了基本调试,调试环境GCC和TC,现在我把代码奉献给大家

银行家算法说明:最早由算法大师 迪杰克斯拉 (Edsger Dijkstra) 提出,银行家算法,顾名思义,它的原理来源于银行系统的存贷款发放管理,即银行(系统)要将一定的款项(资源)贷款(分配)给N个人(进程),当然不需要考虑信用问题< '_'>,在已经发放了一定的金额后,要使得银行的每一次放款(分配资源)都能使得银行(系统)的运行安全(预防死锁)(可以这么理解吧),因此银行家要对现有的资金进行合理分配发放,基本要求要银行必须保留一定的存款不能低于一定的限度(临界资源),同时又不能不放贷款不然会让客户“饿死”(进程饥饿),客户在使用完贷款后要返还(释放)这笔贷款,当然是没有利息的,然后银行要再分配给客户,直到满足客户的多有贷款请求

Read more…

Categories: 算法研究 Tags: , ,

[算法]简单的背包问题递归解法,C语言实现

January 4th, 2009 8 comments

今天讲点简单的算法,最简单的背包0算法,使用了递归的方法,相信看完代码的朋友会发现这段代码很熟悉,不过CG提供这些代码的目的只是让全部背包算法的完整提供地给大家,代码很简单,相信高手一看就懂,这里的背包算法只是考虑了物品的重量,没有考虑物品的价值,是初学递归算法的朋友必看的代码,高手的话全当复习一下吧。
因为CG最近要考试了,一口气要考6门,所以博客更新没有这么快了,请大家见谅不过我还是会保持每天提供至少一篇的速度写博文,希望大家能支持,谢谢
预告下明天的算法博文,《银行家算法》,今天复习了下操作系统,晚上重新安装了系统,浪费了两个小时,代码明天调试后奉上,希望大家继续关注。

Read more…

Categories: 算法研究 Tags: ,

[算法]数据结构算法背包问题解法之递归解法,C语言实现

December 30th, 2008 8 comments

今天讲背包问题的最后一种解法,递归解法,这种解法也是目前算法教材上讲的基本解法之一,如果你有一本关于这类算法的书籍,一般都可以找到你想要的算法,背包问题具体是什么,大家可以参考我的以前的文章,可以直接到下面的相关链接里面找到,我在最近发布关于背包问题的基本解法,动态规划解法,回溯解法,大家可以直接参照我的页面链接,如果具体还有问题不懂的话,也非常欢迎大家留言

好的,讲一讲递归算法,我提供的算法是使用了有效重量,最大可用价值作为递归参数逐个测试物件的重量和价值,直到找到最佳的侯返回,请注意,这里我设置的条件是只要满足背包可以放就可以,并不是贪心算法,请注意区别。

Read more…

Categories: 算法研究 Tags: , ,