Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để in một ma trận có kích thước n * n theo thứ tự xoắn ốc bằng cách sử dụng C #?

Để xoay ma trận theo thứ tự xoắn ốc, chúng ta cần làm như sau cho đến khi tất cả ma trận bên trong và ma trận bên ngoài được bao phủ -

  • Bước 1 - Di chuyển các phần tử của hàng trên cùng

  • Bước 2 - Di chuyển các phần tử của cột cuối cùng

  • Bước 3 - Di chuyển các phần tử của hàng dưới cùng

  • Bước 4 - Di chuyển các phần tử của cột đầu tiên

  • Bước 5 - Lặp lại các bước trên cho vòng trong khi có ma trận bên trong

Ví dụ

using System;
namespace ConsoleApplication{
   public class Matrix{
      public void PrintMatrixInSpiralOrder(int m, int n, int[,] a){
         int i, k = 0, l = 0;
         while (k < m && l < n){
            for (i = l; i < n; ++i){
               Console.Write(a[k, i] + " ");
            }
            k++;
            for (i = k; i < m; ++i){
               Console.Write(a[i, n - 1] + " ");
            }
            n--;
            if (k < m){
               for (i = n - 1; i >= l; --i){
                  Console.Write(a[m - 1, i] + " ");
               }
               m--;
            }
            if (l < n){
               for (i = m - 1; i >= k; --i){
                  Console.Write(a[i, l] + " ");
               }
               l++;
            }
         }
      }
   }
   class Program{
      static void Main(string[] args){
         Matrix m = new Matrix();
         int R = 3;
         int C = 6;
         int[,] aa = { { 1, 2, 3, 4, 5, 6 },
            { 7, 8, 9, 10, 11, 12 },
            { 13, 14, 15, 16, 17, 18 } };
            m.PrintMatrixInSpiralOrder(R, C, aa);
      }
   }
}

Đầu ra

1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11