如何将数字扩大。请教各位老大!!
如下一段代码:#include<stdio.h>
#include <stdlib.h>
#define N 21
static void _fun( int,int,int** );
void print(FILE* fp, const int [][N][N] );
int a[1<<N][N][N];
int main( void )
{
int i,j;
int* p=NULL;
unsigned k=1;
FILE *fp;
if ((fp = fopen ("D:\\数组21.txt", "a+")) == NULL)
{
printf("打开文件失败\n");
exit(1);
}
for (i=0;i!=N/2;++i)
k*=3;
for (i=0;i!=k;++i)
{
p=a[i][1];
{
for (j=1;j!=N+1;++j)
a[i][0][j-1]=j;
}
_fun(i,-(N/2-1),&p);
_fun(i,N/2-1-(N+1)%2,&p);
}
print(fp, a);
fclose(fp);
return 0;
}
static void _fun( int k,int n,int** p )
{
if (n>0)
_fun(k/3,n-1,p);
{
int i=N+1;
while (--i)
{
**p=k%3;
++*p;
}
}
if (n<0)
_fun(k/3,n+1,p);
}
void print(FILE* fp, const int a[][N][N] )
{
size_t i;
unsigned k=1;
for (i=0;i!=N/2;++i)
k*=3;
for (i=0;i!=k;++i)
{
size_t j;
fprintf(fp,"i = %d\n",i);
for (j=0;j!=N;++j)
{
size_t k;
for (k=0;k!=N;++k)
fprintf(fp,"%-4d",a[i][j][k]);
fprintf(fp,"\n");
}
fprintf(fp,"\n");
}
}
程序第三行的N取不大于20的数,都可以正常运行,但是取21,就不行了,请问,可以怎么修改呢?
要求:
1):能否将N扩大到50或更大;
2):还是要用到数组编程。