ในปัญหานี้ เราได้รับอาร์เรย์ 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