ภาพรวม
ได้รับเมทริกซ์สี่เหลี่ยมจัตุรัส 2D เป็นอินพุต เป้าหมายคือหาอิลิเมนต์ที่ซ้ำกันในทั้งเส้นทแยงมุมหลัก (Primary Diagonal) และเส้นทแยงมุมรอง (Secondary Diagonal) ตัวอย่างเมทริกซ์:
1 2 3 2 2 4 1 4 7
เส้นทแยงมุมหลักคือ 1, 2, 7 เส้นทแยงมุมรองคือ 3, 2, 1 อิลิเมนต์ร่วมคือ 2
จะมีอิลิเมนต์ร่วมอย่างน้อย 1 ตัวเสมอ
ตัวอย่าง
อินพุต − Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
เอาต์พุต − Row-wise common elements in diagonals: 3
คำอธิบาย − เมทริกซ์:
1 2 1 4 1 6 1 8 1
เส้นทแยงมุมหลัก = 1 1 1, เส้นทแยงมุมรอง = 1 1 1
ทั้ง 3 ค่าร่วมกัน count = 3
อินพุต − Matrix[][5] = {{1, 4, 4, 1}, {3, 4, 4, 6}, {1, 1, 1, 4}, {1, 9, 9, 2}};
เอาต์พุต − Row-wise common elements in diagonals: 3
คำอธิบาย − เมทริกซ์:
1 4 4 1 3 4 4 6 1 1 1 4 1 9 9 2
เส้นทแยงมุมหลัก = 1 4 1 2, เส้นทแยงมุมรอง = 1 4 1 1
3 ค่าแรกร่วมกัน count = 3
แนวทางการแก้ปัญหา
เดินผ่านเมทริกซ์แถวต่อแถวจากแถว 0 สำหรับแต่ละแถว ตรวจสอบว่า M[i][i] เท่ากับ M[i][size-i-1] หรือไม่ หากใช่ เพิ่มตัวนับ
- รับเมทริกซ์อินพุต
Matrix[][5] - กำหนดขนาด
size - ฟังก์ชัน
countElement(int mt[][5], int size)คืนจำนวนอิลิเมนต์ร่วมในทั้งสองเส้นทแยง - ตัวนับเริ่มต้น = 0
- วนลูป
for (int i=0; i - หาก
mt[i][i] == mt[i][size-i-1]เพิ่มตัวนับ - คืนค่าตัวนับ
- พิมพ์ผลลัพธ์ใน main
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int countElement(int mt[][5], int size){
int count = 0;
for (int i = 0; i < size; i++){
if (mt[i][i] == mt[i][size-i-1]){
count = count + 1;
}
}
return count;
}
int main(){
int Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
int size = 3;
cout << "Row-wise common elements in diagonals:" << countElement(Matrix, size);
return 0;
}
ผลลัพธ์
Row-wise common elements in diagonals:3