n×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 সাইজের একটি ম্যাট্রিক্স তৈরি করুন যা প্যাটার্ন সংরক্ষণ করবে।
- আপার ট্রায়্যাঙ্গেল (upper triangle) এলিমেন্টগুলো স্টোর করুন। ডায়াগোনালে নিচে যাওয়ার সাথে সাথে রো ইন্ডেক্স ১ বাড়ে, কলাম ইন্ডেক্স ১ কমে।
- আপার ট্রায়্যাঙ্গেল কমপ্লিট হলে, লোয়ার ট্রায়্যাঙ্গেলও একই লজিক দিয়ে স্টোর করুন।
অ্যালগরিদম
int printdiagonal(int n)
START
STEP 1: DECLARE mat[n][n], i, j, k, d=1, m
STEP 2: LOOP i = 0 to n-1
j = i, k = 0
LOOP j = i down to 0
mat[k][j] = d; d++; k++;
END LOOP
END LOOP
STEP 3: LOOP k = 1 to n-1
i = m = k
LOOP j = n-1 down to m
mat[i][j] = d; d++; i++;
END FOR
END FOR
STEP 4: LOOP i = 0 to n-1
LOOP j = 0 to n-1
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 n = 3;
printdiagonal(n);
return 0;
}
আউটপুট
1 2 4 3 5 7 6 8 9