翻出了两年前写的另一种回字形的算法
干脆一起放了上来
- public void PrintVector(int rows)
- {
- if (rows == 1)
- Console.WriteLine(1);
- else
- {
- int iCent;
- int[,] vect = new int[rows, rows];
- bool odd = rows % 2 == 0 ? true : false;
- if (!odd)
- {
- iCent = (rows - 1) / 2;
- vect[iCent, iCent] = rows * rows;
- }
- else
- {
- iCent = rows / 2;
- }
- for (int ii = 0; ii < iCent; ii++)
- {
- for (int i = ii; i < rows - 1 - ii; i++)
- {
- vect[ii, i] = 4 * (ii * rows - ii * ii) + 1 + i - ii;
- vect[i, rows - 1 - ii] = 4 * (ii * rows - ii * ii) - 3 * ii + rows + i;
- vect[rows - 1 - ii, rows - 1 - i] = 4 * (ii * rows - ii * ii) - 5 * ii + 2 * rows - 1 + i;
- vect[rows - 1 - i, ii] = 4 * (ii * rows - ii * ii) - 7 * ii + 3 * rows - 2 + i;
- }
- }
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < rows; j++)
- {
- Console.Write(vect[i, j].ToString() + " ");
- }
- Console.WriteLine();
- }
- }
- }