private const int N = 3; //5, 7... //奇数private void button1_Click(object sender, EventArgs e)
{
int[,] square = new int[N, N];
int i = -1;
int j = (N + 1) / 2 - 1;
for (int key = 1; key <= N * N; key++)
{
if ((key % N) == 1)
i++;
else
{
i--;
j++;
}
if (i < 0) i = N - 1;
if (j >= N) j = 0;
square[i, j] = key;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
Console.Write("{0} ", square[i, j]);
Console.WriteLine();
}
}
{
int[,] square = new int[N, N];
int i = -1;
int j = (N + 1) / 2 - 1;
for (int key = 1; key <= N * N; key++)
{
if ((key % N) == 1)
i++;
else
{
i--;
j++;
}
if (i < 0) i = N - 1;
if (j >= N) j = 0;
square[i, j] = key;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
Console.Write("{0} ", square[i, j]);
Console.WriteLine();
}
}
{const int N = 5;
int[,] data = new int[N,N]; int i = 0;
int j = N / 2;
for (int k = 0; k < N * N; k++)
{
if (data[i, j] >= k || data[i, j] == 0)
{
data[i, j] = k + 1;
}
else
{
i = Mod(i + 2, N);
j = Mod(j - 1, N);
data[i, j] = k + 1;
}
i = Mod(i - 1, N);
j = Mod(j + 1, N); }
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
Console.Write("{0} ", data[i, j]);
Console.WriteLine();
}
} static int Mod(int i, int j)
{
if (i >= 0)
i = i % j;
else
i = (i + j) % j;
return i;
}算法 http://210.77.218.4:8080/RESOURCE/XX/XXSX/SXBL/BL000071/11936_SR.HTM