
算法
公子烨
What are you prepare to do!
展开
-
求任意整数中1的个数
求下面函数的返回值(微软) -- 统计1的个数 ------------------------------------- int func(int x) { int countx = 0; while(x) { countx++; x = x&(x-1); } return countx; }转载 2011-11-24 18:54:17 · 556 阅读 · 0 评论 -
判断一个数(x)是否是2的n次方
#include int func(int x) { if( (x&(x-1)) == 0 ) return 1; else return 0; } int main() { int x = 8; printf("%d\n", func(x)); } 注: (1) 如果一个数是2的n次方转载 2011-11-24 18:57:08 · 611 阅读 · 0 评论 -
c语言面试题的解题思路
1、有一个字符数组A[6]=“ABCDE”,把它的存储状态变为A[6]=“EDCBA”,不要另外用多的存储空间; #include #include int main() { char buf[]="abcde"; int i = 0; int j = strlen(buf); for(i = 0;i { buf[i]^=buf[j-1]; buf[j-原创 2011-12-01 16:19:08 · 823 阅读 · 0 评论 -
计数排序
计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。 最差时间复杂度 最优时间复杂度 平均时间复杂度 最差空间复杂度 算法的步骤如下: 找出待排序的数组中最大原创 2012-09-24 16:53:17 · 350 阅读 · 0 评论 -
我的螺旋矩阵实现
#include #define N 5 //矩阵长宽 #define DEBUG int main() { int array[N][N]; int x=0,y=0; int maxx=N-1,maxy=N-1,minx=0,miny=0; int number=1; int now=1;原创 2012-10-26 15:10:35 · 446 阅读 · 0 评论 -
N个人开关N盏灯的问题的思考
问题:有N个灯放在一排,从1到N依次顺序编号。有N个人,也从1到N顺序编号。1号将灯全部关闭,2号将凡是2的倍数的灯全部打开;3号将3的倍数的灯全部作相反操作(该灯如为打开,则将它关闭;如关闭,则将灯打开)。以后的人,都和3号操作一样,将凡是自己序号倍数的灯作相反操作。第N个人操作完之后,一共有几盏灯亮着?解题:1. 第M(M<N)个人的操作只能影响到后面M到N盏灯,无法影响到前M-1盏灯...原创 2018-07-03 21:51:36 · 4971 阅读 · 0 评论