主题:[讨论]请教
海洋战舰66666
[专家分:0] 发布于 2007-06-04 20:22:00
我是学C 的新手请教一下 杨辉三角的写法。
请前辈 大哥大姐们指点指点,
小弟在此谢谢
回复列表 (共2个回复)
沙发
liangdong007 [专家分:2840] 发布于 2007-06-04 23:47:00
给你找了一个
杨辉三角节省空间写法(非队列算法)
#include<stdio.h>
#include<stdlib.h>
#define N 10
int **CreateStruct(int num);
void FreeStruct(int **array);
void InitStruct(int** array, int num);
int main(void)
{
int **array;
int i,j;
array = CreateStruct(N);
InitStruct(array,N);
for(i = 0; i < N; ++i)
array[i][0] = array[i][i]= 1;
for(i = 2; i < N; ++i)
for(j = 1; j < i; ++j)
array[i][j] = array[i-1][j-1] + array[i-1][j];
for(i = 0; i < N; ++i)
{
for(j = 0; j <= i; ++j)
printf("%6d",array[i][j]);
printf("\n");
}
FreeStruct(array);
return 0;
}
//构造数据结构
int **CreateStruct(int num)
{
int **array;
int i;
int sum = 0;
array = (int **) malloc(sizeof(int *) * num);//申请指针数组
for(i = 1; i <= num; ++i)//空间大小
sum += i;
*array = (int *) malloc(sizeof(int) * sum);
sum = 0;
for(i = 1; i < num; ++i)
{
sum += i;
*(array + i) = *array + sum;
}
return array;
}
//释放空间
void FreeStruct(int **array)
{
free(*array);
free(array);
}
//初始化数组
void InitStruct(int **array, int num)
{
int i, j;
for(i = 0; i < num; ++i)
for(j =0; j <= i; ++j)
array[i][j] = 0;
}
板凳
海洋战舰66666 [专家分:0] 发布于 2007-06-05 18:24:00
谢谢!
我来回复