हमें एक 2-डी सरणी दी गई है जिसका उपयोग मैट्रिक्स पैटर्न बनाने के लिए किया जाएगा। कार्य एक मैट्रिक्स को दक्षिणावर्त दिशा में 90 डिग्री तक घुमाना है जैसे कि अंतिम पंक्ति पहला कॉलम बन जाती है, दूसरी पंक्ति दूसरी कॉलम बन जाती है और पहली तीसरी कॉलम बन जाती है और चुनौती यह है कि हमें किसी अतिरिक्त स्थान का उपयोग नहीं करना है।पी>
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इनपुट -
int arr[row_col_size][row_col_size] = { { 5, 1, 4}, { 9, 16, 12 }, { 2, 8, 9}}
आउटपुट -
Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: 2 9 5 8 16 1 9 12 4
स्पष्टीकरण - हमें पूर्णांक प्रकार का 2-डी सरणी दिया जाता है। अब हम एक मैट्रिक्स को दक्षिणावर्त दिशा में 90 डिग्री घुमाएंगे।
Before rotation-: { { 5, 1, 4}, { 9, 16, 12 }, { 2, 8, 9}} After rotation-: 2 9 5 8 16 1 9 12 4
इनपुट -
int arr[row_col_size][row_col_size] = { { 2, 1, 9}, { 11, 6, 32 }, { 3, 7, 5}}
आउटपुट -
Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: 2 9 5 8 16 1 9 12 4
स्पष्टीकरण - हमें पूर्णांक प्रकार का 2-डी सरणी दिया जाता है। अब हम एक मैट्रिक्स को दक्षिणावर्त दिशा में 90 डिग्री घुमाएंगे।
Before rotation-: { { 2, 1, 9}, { 11, 6, 32 }, { 3, 7, 5}} After rotation-: 3 11 2 7 6 1 5 32 9
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
<एच2>1. भोले दृष्टिकोण-
एक 2-डी पूर्णांक सरणी इनपुट करें जिसे row_col_size के साथ एक मैट्रिक्स के रूप में माना जाएगा।
-
डेटा को फ़ंक्शन में पास करें Rotate_ClockWise(arr)।
-
समारोह के अंदर Rotate_ClockWise(arr)
-
I से 0 तक के लिए लूप प्रारंभ करें जब तक कि मैं row_col_size/2 से कम नहीं हो जाता।
-
लूप के अंदर, एक और लूप शुरू करें जिसके लिए j से 0 तक j row_col_size - i - 1 से कम है।
-
लूप के अंदर, ptr से arr[i][j], arr[i][j] से arr[row_col_size - 1 - j][i], arr[row_col_size - 1 - j][i] को arr[row_col_size] पर सेट करें - 1 - i] [row_col_size - 1 - j], arr[row_col_size - 1 - i][row_col_size - 1 - j] से arr[j][row_col_size - 1 - i] और arr[j][row_col_size - 1 - मैं] पीटीआर के लिए।
-
-
i से 0 तक के लिए लूप प्रारंभ करें जब तक कि i row_col_size से कम न हो जाए। लूप के अंदर, j से 0 तक के लिए एक और लूप प्रारंभ करें, जो row_col_size से कम है; j++ और प्रिंट गिरफ्तारी[i][j].
2. कुशल दृष्टिकोण
-
एक 2-डी पूर्णांक सरणी इनपुट करें जिसे row_col_size के साथ एक मैट्रिक्स के रूप में माना जाएगा।
-
डेटा को फ़ंक्शन में पास करें Rotate_ClockWise(arr)।
-
समारोह के अंदर Rotate_ClockWise(arr)
-
I से 0 तक के लिए लूप प्रारंभ करें जब तक कि मैं row_col_size से कम नहीं हो जाता।
-
लूप के अंदर, j से 0 तक के लिए एक और लूप शुरू करें, जो row_col_size - i से कम है।
-
लूप के अंदर, ptr को arr[i][j], arr[i][j] से arr[row_col_size - 1 - j]arr[row_col_size - 1 - i] और [row_col_size - 1 - j] को arr पर सेट करें [ j][row_col_size - 1 - i] से ptr.
-
i से 0 तक के लिए लूप प्रारंभ करें जब तक कि मैं row_col_size / 2 से कम नहीं हो जाता। लूप के अंदर, j से 0 तक j से j तक row_col_size से कम के लिए एक और लूप प्रारंभ करें। लूप के अंदर, ptr को arr[i][j], arr[i][j] से arr[row_col_size - 1 - i][j] और arr[row_col_size - 1 - i][j] to ptrपर सेट करें। पी>
-
-
i से 0 तक के लिए लूप प्रारंभ करें जब तक कि i row_col_size से कम न हो जाए। लूप के अंदर, j से 0 तक के लिए एक और लूप प्रारंभ करें, जो row_col_size से कम है; j++ और प्रिंट गिरफ्तारी[i][j].
निष्पक्ष दृष्टिकोण
उदाहरण
#include <bits/stdc++.h> using namespace std; #define row_col_size 3 void Rotate_ClockWise(int arr[row_col_size][row_col_size]){ for(int i = 0; i < row_col_size / 2; i++){ for(int j = i; j < row_col_size - i - 1; j++){ int ptr = arr[i][j]; arr[i][j] = arr[row_col_size - 1 - j][i]; arr[row_col_size - 1 - j][i] = arr[row_col_size - 1 - i][row_col_size - 1 - j]; arr[row_col_size - 1 - i][row_col_size - 1 - j] = arr[j][row_col_size - 1 - i]; arr[j][row_col_size - 1 - i] = ptr; } } } int main(){ int arr[row_col_size][row_col_size] = { { 5, 1, 4},{ 9, 16, 12 },{ 2, 8, 9}}; Rotate_ClockWise(arr); cout<<"Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: \n"; for(int i = 0; i < row_col_size; i++){ for(int j = 0; j < row_col_size; j++){ cout << arr[i][j] << " "; } cout << '\n'; } return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: 2 9 5 8 16 1 9 12 4
कुशल दृष्टिकोण
उदाहरण
#include <bits/stdc++.h> using namespace std; #define row_col_size 3 void Rotate_ClockWise(int arr[row_col_size][row_col_size]){ for(int i = 0; i < row_col_size; i++){ for(int j = 0; j < row_col_size - i; j++){ int ptr = arr[i][j]; arr[i][j] = arr[row_col_size - 1 - j][row_col_size - 1 - i]; arr[row_col_size - 1 - j][row_col_size - 1 - i] = ptr; } } for(int i = 0; i < row_col_size / 2; i++){ for(int j = 0; j < row_col_size; j++){ int ptr = arr[i][j]; arr[i][j] = arr[row_col_size - 1 - i][j]; arr[row_col_size - 1 - i][j] = ptr; } } } int main(){ int arr[row_col_size][row_col_size] = { { 5, 1, 4},{ 9, 16, 12 },{ 2, 8, 9}}; Rotate_ClockWise(arr); cout<<"Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: \n"; for(int i = 0; i < row_col_size; i++){ for(int j = 0; j < row_col_size; j++){ cout << arr[i][j] << " "; } cout << '\n'; } return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Rotation of a matrix by 90 degree in clockwise direction without using any extra space is: 2 9 5 8 16 1 9 12 4