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

In một ma trận đã cho ở dạng xoắn ốc ngược chiều kim đồng hồ trong C ++

Trong bài toán này, chúng ta được đưa ra một ma trận 2 chiều. Và nhiệm vụ của chúng ta là in các phần tử của ma trận theo hình xoắn ốc ngược chiều kim đồng hồ từ.

Dạng xoắn ốc ngược chiều kim đồng hồ - Đây là một đường đi qua xoắn ốc bắt đầu từ trên cùng bên trái và đi theo hướng ngược chiều kim đồng hồ đến đầu tiên từ dưới lên phải-lên-trái.

In một ma trận đã cho ở dạng xoắn ốc ngược chiều kim đồng hồ trong C ++

Đường đi ngược chiều kim đồng hồ sẽ là 1 5 9 13 14 15 16 12 8 4 3 2 6 10 11 7.

Hãy lấy một ví dụ để hiểu vấn đề

Input:
   2 4 6
   1 7 9
   5 0 3
Output: 2 1 5 0 3 9 7

Để giải quyết vấn đề này, chúng tôi sẽ sử dụng bốn vòng lặp và mỗi vòng theo một hướng và khởi tạo hướng của chúng và đi ngang theo đó.

Ví dụ

Chương trình cho thấy việc triển khai giải pháp của chúng tôi

#include <bits/stdc++.h>
using namespace std;
#define R 3
#define C 3
void printCounterClockwiseSpiral(int m, int n, int matrix[R][C]){
   int i, k = 0, l = 0;
   int count = 0;
   int total = m * n;
   while (k < m && l < n){
      if (count == total)
         break;
      for (i = k; i < m; ++i){
         cout<<matrix[i][l]<<" ";
         count++;
      }
      l++;
      if (count == total)
         break;
      for (i = l; i < n; ++i){
         cout<<matrix[m - 1][i]<<" ";
         count++;
      }
      m--;
      if (count == total)
         break;
      if (k < m){
         for (i = m - 1; i >= k; --i){
            cout<<matrix[i][n - 1]<<" ";
            count++;
         }
         n--;
      }
      if (count == total)
         break;
      if (l < n){
         for (i = n - 1; i >= l; --i){
            cout<<matrix[k][i]<<" ";
            count++;
         }
         k++;
      }
   }
}
int main() {
   int mat[R][C] = {
      { 1, 2, 3 },
      { 4, 5, 6 },
      { 7, 8, 9}
   };
   cout<<"Conter Clockwise Spiral from of the matrix is :\n";
   printCounterClockwiseSpiral(R, C, mat);
   return 0;
}

Đầu ra

Xoắn ốc ngược chiều kim đồng hồ từ ma trận là -

1 4 7 8 9 6 3 2 5