कार्य विकर्ण पैटर्न के n x n के मैट्रिक्स को प्रिंट करना है।
यदि n 3 है तो विकर्ण पैटर्न में एक मैट्रिक्स को प्रिंट करना है -
तो आउटपुट इस तरह होगा -
उदाहरण
Input: 3 Output: 1 2 4 3 5 7 6 8 9 Input: 4 Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16
समस्या बताती है कि हमें एक नंबर n देना होगा और n x n का एक मैट्रिक्स बनाना होगा और फिर हमें मैट्रिक्स को एक विकर्ण पैटर्न में पार करना होगा और मानों को एक अलग मैट्रिक्स में स्टोर करना होगा।
लेकिन इससे हमारे कोड की जटिलता बढ़ जाएगी, इसलिए हम -
-
आकार का एक मैट्रिक्स बनाएं N X N जो प्रिंट करने से पहले पैटर्न को स्टोर कर लेगा।
-
पैटर्न के ऊपरी त्रिकोण में तत्वों को स्टोर करें। जैसा कि देखा गया है कि जैसे ही आप विकर्ण को नीचे ले जाते हैं, पंक्ति अनुक्रमणिका 1 से बढ़ जाती है और स्तंभ अनुक्रमणिका 1 घट जाती है।
-
एक बार जब ऊपरी त्रिकोण पूरा हो जाता है तो निचले त्रिकोण के तत्वों को उसी तरह से स्टोर करें जैसे ऊपरी त्रिकोण यानी पंक्ति अनुक्रमणिका 1 से बढ़ जाती है और स्तंभ अनुक्रमणिका 1 से घट जाती है जैसे आप विकर्ण नीचे ले जाते हैं।
एल्गोरिदम
int printdiagonal(int n) START STEP 1: DECLARE int mat[n][n], i, j, k, d=1, m STEP 2: LOOP FOR i = 0 AND i < n AND i++ ASSIGN j AS i AND k AS 0 LOOP FOR j = I AND j >= 0 AND j-- ASSIGN mat[k][j] AS d INCREMENT d AND k BY 1 END LOOP END LOOP STEP 3: LOOP FOR k = 1 AND k < n AND k++ ASSIGN i AND m EQUALS TO k LOOP FOR j = n-1 AND j >= m AND j-- ASSIGN mat[i][j] AS d; INCREMENT d AND i WITH 1 END FOR END FOR STEP 4: LOOP FOR i = 0 AND i < n AND i++ LOOP FOR j = 0 AND j < n AND j++ PRINT mat[i][j] END FOR PRINT NEWLINE END FOR STOP
उदाहरण
#include <stdio.h> int printdiagonal(int n){ int mat[n][n], i, j, k, d=1, m; for ( i = 0; i < n; i++){ j = i; k = 0; for ( j = i; j >= 0; j--){ mat[k][j] = d; d++; k++; } } for ( k = 1; k < n; k++){ i = m = k; for ( j = n-1; j >= m; j--){ mat[i][j] = d; d++; i++; } } for ( i = 0; i < n; i++){ for(j = 0; j < n; j++){ printf("%d ", mat[i][j] ); } printf("\n"); } } int main(int argc, char const *argv[]){ int n = 3; printdiagonal(n); return 0; }
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
1 2 4 3 5 7 6 8 9