
View Code
#include " iostream "
using namespace std;
int main()
{
int n,i,j;
int b[ 720 ][ 720 ];
while (cin >> n)
{
memset(b, 0 , sizeof (b));
if (n == 1 ) cout << n << endl;
else
{
i = 1 ,j = 1 ;
int k = 1 ;
for ( int t = 1 ; t < n ; t ++ )
{
while (j <= n - i + 1 && j >= i) // 横行->rigth
{
b[i][j] = k ++ ;
if (k == n * n) break ;
j ++ ;
}
if (k - 1 == n * n) break ;
j -- ;
while (i < j && i >= n - j + 1 ) // 竖行down
{
i ++ ;
b[i][j] = k ++ ;
if (k - 1 == n * n) break ;
}
if (k - 1 == n * n) break ;
while (j > n - i + 1 ) // 横行lift
{
j -- ;
b[i][j] = k ++ ;
if (k - 1 == n * n) break ;
}
i -- ;
if (k - 1 == n * n) break ;
while (i > j && i < n - j + 1 ) // 竖行up
{
b[i][j] = k ++ ;
if (k - 1 == n * n) break ;
i -- ;
}
if (k - 1 == n * n) break ;
i ++ ;j ++ ;
}
for (i = 1 ;i <= n;i ++ )
{
for (j = 1 ;j <= n;j ++ )
{
printf( " %d " ,b[i][j]);
if (j <= n) cout << " " ;
}
cout << endl;
}
}
}
return 0 ;
}
转载于:https://my.oschina.net/garyun/blog/602888