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();
    }
}

解决方案 »

  1.   

    Main(string[] args) 
               {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
      

  2.   

    zswang(伴水清清)(专家门诊清洁工) 能不能给讲一下算法?没看出来