要求效果:
我的算法:
牛人算法:
我的算法:
- private static void Print(int n)
- {
- int rank = GetRank(n);
- int[,] matrix = new int[rank, rank];
- for (int i = n; i > 0; i--)
- {
- SetMatric(matrix, rank, i);
- }
- PrintResult(rank, matrix);
- }
- private static int GetRank(int n)
- {
- return n * 2 - 1;
- }
- private static void SetMatric(int[,] matrix, int rank, int n)
- {
- int row1 = Number - n;
- int row2 = rank - (Number - n) - 1;
- int colOffice = Number - n;
- int count = GetRank(n);
- for (int i = 0; i < count; i++)
- {
- matrix[row1, colOffice + i] = n; // 上面行
- matrix[row2, colOffice + i] = n;// 下面行
- if (i < count - 2)
- {
- matrix[row1 + i + 1, colOffice] = n;// 左列
- matrix[row1 + i + 1, rank - colOffice - 1] = n;// 右列
- }
- }
- }
- private static void PrintResult(int rank, int[,] matrix)
- {
- for (int i = 0; i < rank; i++)
- {
- for (int j = 0; j < rank; j++)
- {
- Console.Write(matrix[i, j]);
- }
- Console.Write(Environment.NewLine);
- }
- }
- static void printbox(int num)
- {
- for (int i = 0; i < num * 2 - 1; i++)
- {
- for (int j = 0; j < num * 2 - 1; j++)
- {
- Console.Write(Math.Max(Math.Abs(i - num + 1), Math.Abs(j - num + 1)) + 1);
- }
- Console.WriteLine();
- }
- }