回 帖 发 新 帖 刷新版面

主题:[讨论]请教

我是学C 的新手请教一下 杨辉三角的写法。
请前辈   大哥大姐们指点指点,
小弟在此谢谢

回复列表 (共2个回复)

沙发

给你找了一个

 杨辉三角节省空间写法(非队列算法)  
 #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; 
}  
 

板凳

谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册