螺旋数组

来源:互联网 发布:虎牙董导淘宝店铺 编辑:程序博客网 时间:2024/04/29 19:37


        enum DIRECTION
        {
            RIGHT = 0,
            DOWN,
            LEFT,
            UP
        }
        static void Simulate(int n)
        {
            int[,] data = new int[n, n];
            int x, y;
            x = y = (n - 1) / 2; //1的位置
            data[x, y] = 1;
            int len = 1;
            int count = 0;
            int num = 2;
            DIRECTION dir = DIRECTION.RIGHT;
            while (num <= n * n)
            {
                for (int i = 0; i < len; i++)
                {
                    switch (dir)
                    {
                        case DIRECTION.LEFT:
                            --y;
                            break;
                        case DIRECTION.RIGHT:
                            ++y;
                            break;
                        case DIRECTION.UP:
                            --x;
                            break;
                        case DIRECTION.DOWN:
                            ++x;
                            break;
                        default: break;
                    }
                    data[x, y] = num++;
                    if (num > n * n)
                    {
                        break;
                    }
                }
                count++;
                if (count == 2)
                {
                    count = 0;
                    len++;
                }
                dir = (DIRECTION)(((int)dir + 1) % 4);
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(data[i, j].ToString("D3"));
                }
                Console.WriteLine();
            }
        }