蛇形填数

 enum Direct{
            Up,
            Down,
            Left,
            Right
  }

 static int[][] GetTwoDimensionArr(int lineNum)
 {
            Direct direct = Direct.Down;
            int val = 1;
            int[][] arr = new int[lineNum][];
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = new int[lineNum];
            }
            int currLine = 0, currRow = 0;
            while (val != Math.Pow(lineNum,2))
            {
                arr[currLine][currRow] = val;
                switch (direct)
                {
                    case Direct.Up:
                        if (currLine == 0 || arr[currLine - 1][currRow] != 0)
                        {
                            direct = Direct.Left;
                            currRow--;
                        }
                        else
                        {
                            currLine--;
                        }
                        break;
                    case Direct.Down:
                        if (currLine == lineNum - 1 || arr[currLine + 1][currRow] != 0)
                        {
                            direct = Direct.Right;
                            currRow++;
                        }
                        else
                        {
                            currLine++;
                        }
                        break;
                    case Direct.Left:
                        if (currRow == 0 || arr[currLine][currRow - 1] != 0)
                        {
                            direct = Direct.Down;
                            currLine++;
                        }
                        else
                        {
                            currRow--;
                        }
                        break;
                    case Direct.Right:
                        if (currRow == lineNum - 1 || arr[currLine][currRow + 1] != 0)
                        {
                            direct = Direct.Up;
                            currLine--;
                        }
                        else
                        {
                            currRow++;
                        }
                        break;
                    default:
                        break;
                }
                val++;
            }
            return arr;
}

 static void Main(string[] args){

            int[][] arr = GetTwoDimensionArr(10);
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr[i].Length; j++)
                {
                    Console.Write(arr[i][j] + "\t");
                }
                Console.Write("\n");
            }

}

 

 

 

蛇形填数