1 2 3 412 13 14 511 16 15 610 9 8 7以上图形如何实现,算法?===========================================================================#include<iostream>#include<stdlib.h>using namespace std;int mask=4,m=1,i,j;void check(int mask){ switch (mask) { case 4:j++;break; //表示行,向右 case 3:i++;break; //列向下 case 2:j--;break; //行,向左 case 1:i--;break; //列向上 }}int main(int argc,char *argv[]){ int n; cout<<"请输入维数"<<endl; cin>>n;/*分配空间,并赋初值为0 */ int **aa=(int **)calloc(sizeof(int *),n); for(int k=0;k<n;k++)aa[k]=(int *)calloc(sizeof(int),n); for(i=0;i<n;i++) for(j=0;j<n;j++) aa[i][j]=0; i=j=0;/*循环赋值 */ while(m<=n*n) { aa[i][j]=m++; if(mask==4&&(j+1==n||aa[i][j+1]))mask--; if(mask==3&&(i+1==n||aa[i+1][j]))mask--; if(mask==2&&(j-1<0||aa[i][j-1]))mask--; if(mask==1&&aa[i-1][j])mask--; if(!mask)mask=4; check(mask);//此函数对i及j修改. }/*显示 */ for(i=0;i<n;i++) { for(j=0;j<n;j++)cout<<aa[i][j]<<'\t'; cout<<endl; } /*释放空间*/ for(i=0;i<n;i++)free(aa[i]); system("PAUSE"); return 0;}=====================================================================逆旋转以后补上.

评论