不知道我的这个杨辉三角的空间复杂度是多少呢?
程序代码:
#include<stdio.h>
#define N 13
int main(void)
{
int a[N][N];
int i,j,n;
do
{
system("cls");
printf("请输入杨辉三角的层数(为了保持队列整齐,所以请输入3~13的整数):\n");
scanf("%d",&n);
puts("");
if(n<3||n>13)
{
printf("您输入的数字超出范围,请重新输入。\n");
sleep(1);
}
}
while(n<3||n>13);
for(i=0;i<n;++i)
for(j=0;j<=i;++j)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<n;++i)
{
for(j=0;j<12-i;++j)
printf(" ");
for(j=0;j<=i;++j)
printf("%6d",a[i][j]);
puts("");
}
getch();
}
----------------解决方案--------------------------------------------------------
空间复杂度O(n^2),时间复杂度O(n^2)
----------------解决方案--------------------------------------------------------
你的空间代价和n没有关系,是定值(13×13+3)×sizeof(int)
----------------解决方案--------------------------------------------------------