
算法/数据结构
lwclcy
这个作者很懒,什么都没留下…
展开
-
一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字bool IsDuplicateNumber(int *array, int n){ if(array==NULL) return false; int i,temp; for(i=0;i<n;i++) { while(array[原创 2012-10-07 22:51:07 · 12047 阅读 · 7 评论 -
n个数依次入栈,出栈顺序有多少种?
这个问题是卡特兰数的第n项结果。卡特兰数 卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020,原创 2012-10-07 21:00:11 · 7960 阅读 · 0 评论 -
C语言 求一个大数的阶乘
C语言 求一个大数的阶乘void BigFactorial(int m){ static int a[50000]={0,1};//第一位不用 int i,j,carry,tmp,lenth=1;//carry表示进位 for (i=2;i<=m;i++) { carry=0; for (j=1;j<=lenth;j++) { //乘法转化为加法和进位 t原创 2012-10-08 11:08:04 · 8025 阅读 · 2 评论 -
谷歌面试:实现两个N*N矩阵的乘法,矩阵由一维数组表示
这个题主要是弄清楚那一部分是行,哪一部分是列就可以了。代码使用了三个变量来实现不同行和列的递增。行和列相乘的函数,如下:#define size 2int * multi(int* a, int* b, int N){ int i,j,k,temp; int * c = (int *)malloc(N*N); for(i=0;i<N;i++) { for(j=0;j原创 2012-10-08 21:57:30 · 3692 阅读 · 0 评论 -
计算一个数组中最大子序列的和
输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为 O(n)。int arr[10];void randData(int a[], int start, int end){ srand(time(NULL)); for (int i = start; i <= end; ++原创 2012-10-08 15:43:42 · 1453 阅读 · 1 评论 -
C语言 输出一个数组中,所有元素之和为0的子序列
本程序用到了一个时间种子,来随机产生10个整数[-5~5],函数是randData( )。还有一个计算子序列为0的函数ZeroSubarray( )。randData( )如下:int arr[10];void randData(int a[], int start, int end){ srand(time(NULL)); for (int i = start; i <= e原创 2012-10-08 15:08:33 · 4183 阅读 · 1 评论