看面试算法题突然想到大学时写的一算法题
using System; using System.Collections.Generic; using System.Linq; using System.Text; //按三 //1 2 3 //8 9 4 //7 6 5 //按四 //1 2 3 4 //12 13 14 5 //11 16 15 6 //10 9 8 7 //输出按n时的矩阵 namespace n时矩阵 { class Program { public static void Display(int[,] A) { if (A.GetLength(0) % 2 == 0) { A[A.GetLength(0) / 2, A.GetLength(1) / 2] = A[A.GetLength(0) / 2 - 1, A.GetLength(1) / 2] + 1; } for (int i = 0; i < A.GetLength(0); i++) { for (int j = 0; j < A.GetLength(1); j++) { Console.Write("{0,4}", A[i, j]); } Console.WriteLine(); } } static void Main(string[] args) { int i,m,n; Random r = new Random(); n = r.Next(1, 20); Console.WriteLine("随机矩阵边长为"+n); int[,] A = new int[n, n]; A[0,0]=1; for (m = 0; m <A.GetLength(0) / 2; m++) { for (i = m; i < n-1 ; i++) { A[m, i+1 ] = A[m, i] + 1; } for (i = m; i < n-1 ; i++) { A[i+1 , n - 1] = A[i, n - 1] + 1; } for (i = n - 1; i >= m+1; i--) { A[n - 1, i - 1] = A[n - 1, i] + 1; } for (i = n - 1; i >=m+2; i--) { A[i-1, m] = A[i, m] + 1; } A[m + 1, m + 1] = A[m + 1, m] + 1; n--; } Console.WriteLine("矩阵为:"); Display(A); Console.ReadLine(); } } }