Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อิลิเมนต์ร่วมกันแถวต่อแถวในเส้นทแยงมุมหลักและรองของเมทริกซ์สี่เหลี่ยมจัตุรัสใน C++

ภาพรวม

ได้รับเมทริกซ์สี่เหลี่ยมจัตุรัส 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