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

พิมพ์เมทริกซ์ในลักษณะอื่น (จากซ้ายไปขวาจากนั้นจากขวาไปซ้าย) ใน C++


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

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

Input: array = {
   {2, 5}
   {4, 9}
}
Output: 2 5 9 4

เพื่อแก้ปัญหานี้ เราจะพิมพ์องค์ประกอบในทิศทางที่กำหนด (LtoR และ RtoL) ของแถว และองค์ประกอบธงเพื่อแสดงทิศทางการพิมพ์จะเปลี่ยนไปหลังจากการทำซ้ำทุกครั้ง

นี่เป็นวิธีแก้ปัญหาที่ง่ายและมีประสิทธิภาพด้วยความซับซ้อนของเวลา =O(R*C)

ตัวอย่าง

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

#include<iostream>
using namespace std;
#define R 3
#define C 3
void printAlternateMatrix(int arr[R][C]) {
   bool direction = true;
   for (int i=0; i<R; i++){
      if (direction){
         for (int j=0; j<C; j++)
            printf("%d ", arr[i][j]);
      } else{
         for (int j=C-1; j>=0; j--)
            printf("%d ",arr[i][j]);
      }
      direction = !direction;
   }
}
int main() {
   int arr[][C] = {
      { 23 , 50 , 4 },
      { 89 , 9 , 34 },
      { 75 , 1 , 61 },
   };
   cout<<"Matrix in alternate order is :\n";
   printAlternateMatrix(arr);
   return 0;
}

ผลลัพธ์

เมทริกซ์ในลำดับอื่นคือ −

23 50 4 34 9 89 75 1 61