一个小矩阵-奇数与偶数的运行速度差别超级大……
#include<stdio.h>#include<stdlib.h>
#pragma warning(disable:4996)
main()
{ int**a;
int n,i,j,y,k;
printf("please input the integer n:\n");
scanf("%d",&n);
a=(int**)malloc(sizeof(int*)*n);
for(i=0;i<n;i++)
a[i]=(int*)malloc(sizeof(int)*n);
y=1;
k=1;
i=0;j=0;
while(y<=n*n)
{ for((i=k-1)&&(j=k-1);j<=(n-k);j++)
{a[j][i]=y;
y++;}
y--;
for(j--;(i<=(n-k))&&(y<=n*n);i++)
{a[j][i]=y;
y++;}
y--;
for(i--;(j>=k-1)&&(y<=n*n);j--)
{a[j][i]=y;
y++;}
y--;
for(j++;(i>=k)&&(y<=n*n);i--)
{a[j][i]=y;
y++;}
k++;
}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
脑子抽抽编了个小程序,目的是s型给一个任意的n*n矩阵输入值;
在VS上运行一跑,如果输入的n是偶数,结果秒出;如果输入的n是奇数的话,等待时间超级超级长,超过了5s……这是为什么呢?
(同时也求助更简单的算法,比如递推或者求结束点规律之类的方法;语言用C ^—^)