EricYang

Tech Spot of Eric

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页

2012年8月9日

摘要: 长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合成绩最大的一组,并写出时间复杂度 1 #include <iostream> 2 #include <cstdio> 3 #include <ctime> 4 #include <cstdlib> 5 6 using namespace std; 7 8 void randomGen(int *array, int size) 9 {10 srand(time(NULL));11 12 for(int i=0; i<size; i++)13 {14 array[i] 阅读全文
posted @ 2012-08-09 14:30 Eric-Yang 阅读(266) 评论(0) 推荐(1)

2012年8月8日

摘要: 任意一个整正数N,求一个最小的正整数M(M>1),使得M*N的十进制表示形式只包含1和0 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 int main() 8 { 9 long long M,N;10 N=99;11 long long reminder[N];12 int i,j,k;13 int noUpdates=0;14 for(i=0; i<N; i++)15 {16 rem... 阅读全文
posted @ 2012-08-08 17:04 Eric-Yang 阅读(172) 评论(0) 推荐(0)

2012年8月7日

摘要: [zz]http://hi.baidu.com/piaoshi111/item/1461bff47b96cedb6225d23d扩展问题随着Tango的发展,管理员发现,“超级水王”没有了。统计结果表明,有3个发帖很多的ID,他们的发帖数目都超过了帖子总数目N的1/4。你能从发帖ID列表中快速找出他们的ID吗?参考上面的解法,思路如下:如果每次删除四个不同的ID(不管是否包含发帖数目超过总数1/4的ID),那么,在剩下的ID列表中,原先发帖比例大于1/4的ID所占比例仍然大于1/4。可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到问题的答案。代码如下: 1 v 阅读全文
posted @ 2012-08-07 18:45 Eric-Yang 阅读(195) 评论(0) 推荐(0)

摘要: O(n+logN): 排序后+统计O(1+lonN):排序后+查找中间元素(大于一半的元素一定出现在有序序列的中点)O(N):不同元素两两相消View Code 1 #include <iostream> 2 3 using namespace std; 4 5 6 int find(int array[], int N) 7 { 8 int candid, ntimes; 9 10 ntimes=0;11 for(int i=0; i<N; i++)12 {13 if(ntimes==0)14 {15 ... 阅读全文
posted @ 2012-08-07 18:39 Eric-Yang 阅读(243) 评论(0) 推荐(0)

2012年8月6日

摘要: View Code 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int a, b; 9 int p1, p2;10 int rlt;11 12 while(scanf("%d%d",&a,&b)!=EOF)13 {14 rlt=0;15 while(a!=0 && b!=0)16 {17 p1=a-(a&(a-1)); //p1为第一次出现一的位... 阅读全文
posted @ 2012-08-06 20:25 Eric-Yang 阅读(360) 评论(0) 推荐(0)

2012年5月17日

摘要: http://blog.csdn.net/morewindows/article/details/7370155全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cb 阅读全文
posted @ 2012-05-17 11:34 Eric-Yang 阅读(349) 评论(0) 推荐(0)

2012年5月5日

摘要: 随机抽样问题表示如下:要求从N个元素中随机的抽取k个元素,其中N无法确定。这种应用的场景一般是数据流的情况下,由于数据只能被读取一次,而且数据量很大,并不能全部保存,因此数据量N是无法在抽样开始时确定的;但又要保持随机性,于是有了这个问题。所以搜索网站有时候会问这样的问题。这里的核心问题就是“随机”,怎么才能是随机的抽取元素呢?我们设想,买彩票的时候,由于所有彩票的中奖概率都是一样的,所以我们才是“随机的”买彩票。那么要使抽取数据也随机,必须使每一个数据被抽样出来的概率都一样。【解决】解决方案就是蓄水库抽样(reservoid sampling)。主要思想就是保持一个集合(这个集合中的每个数字 阅读全文
posted @ 2012-05-05 14:36 Eric-Yang 阅读(2107) 评论(0) 推荐(0)

摘要: #include<algorithm>#include <functional>using namespace std;STL中堆的使用: vector<int> a; //建堆,建好后第一个元素最大(小) make_heap(a.begin(),a.end(), less<int>() ); //取最大值 x=a.front(); pop_heap(a.begin(),a.end(), less<int>() ); a.pop_back(); // 删除最后一个数据 //插入元素 a.... 阅读全文
posted @ 2012-05-05 11:49 Eric-Yang 阅读(338) 评论(0) 推荐(0)

2012年5月4日

摘要: 输出等差数列由小到大?如果没有符合条件的就输出“NO”。例如:输入[1,3,0,5,-1,6] ,输出[-1,1,3,5] 。要求:时间复杂度,空间复杂度尽量小解体思路:设随机数为a[],首先排序,(1)枚举两个数,作为数列中相邻的两个元素Ai,Ai+1,那么可求出等差d=Ai+1-Ai。于是Ai-1=Ai-d,Ai+2=Ai+1+d,因此可以在剩下的数寻找Ai-1,Ai+2是否存在,可以用一个set来维护查找,而数列最长可为n,查找次数最大为n,而查找复杂度为logn,总时间复杂度为O(n^3logn)。复杂度太高,不可取。(2)动态规划求解。设f[i][j]为以a[i],a[j]结尾的等差 阅读全文
posted @ 2012-05-04 21:14 Eric-Yang 阅读(910) 评论(0) 推荐(0)

摘要: 只要找到这样一个节点:已知的两个节点一个在它的左边子树,一个在它的右边子树;或者这个节点就是已知的两个节点中的一个,而另一个恰好在它的下面。TREE* CommonFather(TREE *root, TREE *A, TREE *B){ if(root == NULL) return root; if(root == A)//如果找到A,则后面的都不再找了,如果其他分支没找到B,则B必定在A下面 return A; if(root == B)//同上 return B; TREE *leftChild == NULL; ... 阅读全文
posted @ 2012-05-04 17:27 Eric-Yang 阅读(579) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页