Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์เมทริกซ์ที่กำหนดในรูปแบบเกลียวทวนเข็มนาฬิกาใน C++


ในปัญหานี้ เราได้รับเมทริกซ์ 2 มิติ และหน้าที่ของเราคือพิมพ์องค์ประกอบของเมทริกซ์เป็นเกลียวทวนเข็มนาฬิกาจาก

รูปแบบเกลียวทวนเข็มนาฬิกา − เป็นการเคลื่อนที่แบบเกลียวซึ่งเริ่มจากซ้ายบนและไปในทิศทางทวนเข็มนาฬิกาไปยังด้านล่าง-ขวา-บน-ซ้ายอันแรก

พิมพ์เมทริกซ์ที่กำหนดในรูปแบบเกลียวทวนเข็มนาฬิกาใน C++

การเคลื่อนที่ทวนเข็มนาฬิกาจะเป็น 1 5 9 13 14 15 16 12 8 4 3 2 6 10 11 7.

มาดูตัวอย่างทำความเข้าใจปัญหากัน

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

ในการแก้ปัญหานี้ เราจะใช้สี่ลูปและแต่ละอันอยู่ในทิศทางเดียว และเริ่มต้นทิศทางและข้ามไปตามนั้น

ตัวอย่าง

โปรแกรมแสดงการใช้งานโซลูชันของเรา

#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;
}

ผลลัพธ์

ทวนเข็มนาฬิกาหมุนวนจากเมทริกซ์คือ −

1 4 7 8 9 6 3 2 5