1、内螺旋
#include<iostream>
#include<iomanip>
using namespace std;
#define max(a,b) ((a)>(b)? (a):(b))
#define abs(a) ((a)>=0 ?(a):(-a))
int func(int x, int y)
{
int t = max(abs(x), abs(y));
int temp = (2 * t - 1)*(2 * t - 1);
int val;
if (y == -t)
val = temp + 7 * t + x;
else if (y == t)
val = temp + 3 * t - x;
else if (x == -t)
val = temp + 5 * t - y;
else if (x == t)
val = temp + t + y;
return val;
}
int main()
{
int x, y;
int n;
cout << "输入维度:";
cin >> n;
for (y = 0-n; y <= n; y++)
{
for (x = 0-n; x <= n; x++)
cout << setw(4) << func(x, y);
cout << endl;
}
return 0;
}
2、外螺旋
#include<iostream>
#include<iomanip>
using namespace std;
int a[10][10];
void func(int n)
{
int m = 1, i, j;
for (i = 0; i < n / 2; i++)
{
for (j = 0; j < n; j++)
{
if (a[i][j] == 0)
{
a[i][j] = m;
m++;
}
}
for (j = i + 1; j < n - i; j++)
{
if (a[j][n - i - 1] == 0)
{
a[j][n - i - 1] = m;
m++;
}
}
for (j = n - i - 1; j>i; j--)
{
if (a[n - i - 1][j] == 0)
{
a[n - i - 1][j] = m;
m++;
}
}
for (j = n - i - 1; j > i; j--)
{
if (a[j][i] == 0)
{
a[j][i] = m;
m++;
}
}
if (n % 2 == 1)
a[n / 2][n / 2] = m;
}
}
int main()
{
int n, i, j;
cout << "请输入维度:";
cin >> n;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
a[i][j] = 0;
}
func(n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
cout <<setw(4)<< a[i][j] << " ";
cout << endl;
}
}