编程之美
changjiangwuwu
这个作者很懒,什么都没留下…
展开
-
找出N个浮点数中最大的k个不同的浮点数
N个浮点数中,有相同的浮点数,找出其中最大的k个不同的浮点数; 用容量为k的最小堆存储最大的k个不同的浮点数,堆顶就是k个中最小的浮点数,遍历N个数,与堆顶元素比较大小,若比堆顶元素大,则与之交换,调整最小堆。void Heap(float heap[],int i,int size) { int l,r,mix; float temp; l原创 2013-06-16 22:02:12 · 1100 阅读 · 3 评论 -
二进制数a,b有多少位不同.
编程之美上扩展问题: 给定两个正整数(二进制表示形式)a、b,问把a变成b需要改变多少位,也就是说,整数a,b的二进制中有多少位是不同的。 对于这个问题,先把a,b进行异或运算,结果是相通位为0,不同位1.之后直接求结果的1的个数。本题方法简单,求一的个数有多种解决方案,这里只讲一种我最喜欢的一种。typedef unsigned char BYTE;//求二进制数原创 2013-06-16 15:57:15 · 1679 阅读 · 0 评论 -
判断N是否为2的方幂
编程之美相关题目: 给定整数n,判断它是否为2的方幂. 若一个数是二的方幂,则该数的二进制表示1的个数为1.若一个数1的个数为1,则n&(n-1)==0原创 2013-06-16 16:34:43 · 1596 阅读 · 0 评论 -
求大数的最大公约数的最高效方法
求大数x,y的最大公约数,用(x,y)表示x,y的最大公约数。若x,y都为偶数,则(x,y)=2*(x>>1,y>>1);//>>1表示右移一位若x为偶数,y为奇数,则(x,y)=(x>>1,y);若y为偶数,x为奇数,则(x,y)=(x,y>>1);若x,y都为奇数,则(x,y) = (y,x-y)。//x>y时时间复杂度为O(log2(max(x,y)))。int6原创 2013-06-30 22:03:32 · 867 阅读 · 0 评论 -
两个字符串的最长公共子串
例如str1:=“abcd”;str2 = “bcde”;定义一个二维数组啊arr[4[4];a bc db 0 1 0 0c 0 0 1 0d 0 0 0 0e 0 0 0 0字符串1,2若有相同的字符,对应的数组设置为一,对角线连续为1,对应的为公共子串,找出最长的即可。void lSubstrin原创 2013-09-15 16:07:01 · 693 阅读 · 0 评论 -
创新工场笔试题
/* 给定一组整数1~n^2;按规则填入到n*n的二维数组中 例如:n = 4 1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16*/void function(int **arr,int len,int *val){ int i,j,k,m,n; int flag = 1; arr[0][0] = val[0]; arr[len-1原创 2013-09-16 22:18:58 · 597 阅读 · 0 评论