摘要: Q: 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i]。 要求: 1.不准用除法运算 A: 要求一:线性时间复杂度,空间复杂度不限。 很简单,两个辅助数组。 void Func(int *a,int *b,int n){ int *left=new int[n]; int *r... 阅读全文
posted @ 2012-07-17 16:37 Cavia 阅读(317) 评论(0) 推荐(0) 编辑
摘要: Q:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10 A:要构造rand10(),则需要保证1-10的每一个数出现的概率为1/10。rand7()能够出现1-7的等概率数字,两次rand7()能出现49种等概率的数字,而如果我们有0-48这49种数字num的话,则当num<40的前提下,num/4+1就能构造出1-10这十个数字... 阅读全文
posted @ 2012-07-17 10:45 Cavia 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 之前在http://www.cnblogs.com/daniagger/archive/2012/06/14/2549777.html中描述了全排列算法的递归解法,这里再说一种算法--字典序排列。 字典序排列就是按照字典a-z,1-9的顺序给出字符串的顺序全排列,例如abc的全排列就是从abc一直排到cba。那么给定一个字符串,怎么找出恰好大于该字符串的下一个排列呢? 我们考虑如下的步骤: ... 阅读全文
posted @ 2012-07-17 09:31 Cavia 阅读(1842) 评论(0) 推荐(0) 编辑