题意:
给出帕斯卡三角形的第k行。
思路:
由通项公式写出各项。注意数据类型的范围。
代码如下:
int pas(int n, int k){
int i=0,j=0;
long long a=1;
int mark[k+1];
if(k==0){
return 1;
}
for(i=0;i<k+1;++i){
mark[i]=1;
}
k=(n-k)>k?k:(n-k);
for(i=n,j=1;i>n-k;--i){
a*=i;
for(j=1;j<=k;++j){
if(mark[j]==1){
if(a%j==0){
a/=j;
mark[j]=0;
}
}
}
}
for(j=1;j<=k;++j){
if(mark[j]==1){
a/=j;
}
}
return a;
}
int* getRow(int rowIndex, int* returnSize) {
int i=0;
int* r=(int*)malloc(sizeof(int)*(rowIndex+1));
for(i=0;i<=rowIndex;++i){
r[i]=pas(rowIndex,i);
}
*returnSize=rowIndex+1;
return r;
}