हमें एक 2-D सरणी दी गई है जिसका उपयोग मैट्रिक्स पैटर्न बनाने के लिए किया जाएगा। कार्य मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाना है ताकि अंतिम पंक्ति पहला कॉलम बन जाए, दूसरी पंक्ति दूसरा कॉलम बन जाए और पहली तीसरा कॉलम बन जाए और चुनौती यह है कि हमें किसी अतिरिक्त स्थान का उपयोग नहीं करना है।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें:
इनपुट -
int arr[row_col_size][row_col_size] = { { 5, 1, 4}, { 9, 16, 12 }, { 2, 8, 9}}आउटपुट -
दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4
व्याख्या - हमें पूर्णांक प्रकार की 2-D सरणी दी गई है। अब हम मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाएंगे।
घुमाने से पहले-: { { 5, 1, 4}, { 9, 16, 12 }, { 2, 8, 9}} घुमाने के बाद-: 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}}आउटपुट -
दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4
व्याख्या - हमें पूर्णांक प्रकार की 2-D सरणी दी गई है। अब हम मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाएंगे।
घुमाने से पहले-: { { 2, 1, 9}, { 11, 6, 32 }, { 3, 7, 5}} घुमाने के बाद-: 3 11 2 7 6 1 5 32 9नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है
1. नैव दृष्टिकोण
row_col_size के साथ एक 2-D पूर्णांक सरणी इनपुट करें जिसे मैट्रिक्स माना जाएगा।
Rotate_ClockWise(arr) फ़ंक्शन को डेटा पास करें।
फ़ंक्शन Rotate_ClockWise(arr) के अंदर
i को 0 से row_col_size/2 से कम तक लूप FOR शुरू करें।
लूप के अंदर, j को i से row_col_size - i - 1 से कम तक एक और लूप FOR शुरू करें।
लूप के अंदर, 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 पर सेट करें।
i को 0 से row_col_size से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें; j++ और arr[i][j] प्रिंट करें।
2. कुशल दृष्टिकोण
row_col_size के साथ एक 2-D पूर्णांक सरणी इनपुट करें जिसे मैट्रिक्स माना जाएगा।
Rotate_ClockWise(arr) फ़ंक्शन को डेटा पास करें।
फ़ंक्शन Rotate_ClockWise(arr) के अंदर
i को 0 से row_col_size से कम तक लूप FOR शुरू करें।
लूप के अंदर, j को 0 से row_col_size - i से कम तक एक और लूप FOR शुरू करें।
लूप के अंदर, 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 से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें। लूप के अंदर, ptr को arr[i][j] पर सेट करें, arr[i][j] को arr[row_col_size - 1 - i][j] पर और arr[row_col_size - 1 - i][j] को ptr पर सेट करें
i को 0 से row_col_size से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें; j++ और arr[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<<"दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: \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; }आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा
दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 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<<"दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: \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; }आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा
दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4