如何将一个N行N列的二维数组改写成N行1列或者N行2列的数组。
程序代码:
#include<stdio.h> #include <stdlib.h> #define N 13 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:\\数组13和13.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行N列的二维数组群,我想把它改写成N行1列或者N行2列的数组群,同时还要满足上面这段代码现有的规律,还有就是要用数组来编写,如果不用数组来编写,就没意思了,N如果能达到50, 就更好了。小弟不才,请教各位啦!!