杨辉三角算法改进

a 夏天 提交于 2020-02-13 09:21:19

/*
* date:2011-2-15
* create by  zhoulq
*/
#include <stdio.h>
#include <string.h>
//杨辉三角
void ptr(int n)
{
 int **arc;//申明一个指向指针的指针(相当于一个不规则的二位数组)
 int i,j;
 arc=(int**)malloc(sizeof(int)*n);//开辟n行
 for(i=0;i<n;i++)
 {
  *arc=(int*)malloc(sizeof(int)*(i+1));//在第i行上开辟i+1列
  //列赋值
  for(j=0;j<i+1;j++)
  {
   if(j==0||j==i)
   {
    *(*arc+j)=1;
   }
   else
   {
    *(*arc+j)=*(*(arc-1)+j-1)+*(*(arc-1)+j);//*(arc-1) 表示的是上一行的行地址变换为该行(上一行)的首列地址
   }
   printf(" %d",*(*arc+j));
  }
  printf("\n");
  arc++;//行变换
 }
}

void main()
{
 ptr(8);
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!