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

นับแถวในเมทริกซ์ที่ประกอบด้วยองค์ประกอบเดียวกันใน C++


เราได้รับเมทริกซ์ที่ประกอบด้วยจำนวนเต็ม เป้าหมายคือการหาจำนวนแถวในเมทริกซ์ที่มีองค์ประกอบเหมือนกันทั้งหมด

หากมีเมทริกซ์ขนาด 5X4 ดังที่แสดง −

1 5 1 3 1
1 1 1 1 1
5 3 2 3 5
7 7 7 7 7

คำตอบจะเป็น 2 แถวที่ 1 (มีทั้งหมด 1 ตัว) และแถวที่ 3 (มีทั้งหมด 7 ตัว) มีองค์ประกอบเหมือนกัน

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล

matrix =
   [ 1 1 1 1 ]
   [ 2 3 2 7 ]
   [ 3 3 3 3 ]

ผลผลิต − จำนวนแถวในเมทริกซ์ที่ประกอบด้วยองค์ประกอบเดียวกันคือ − 2

คำอธิบาย − แถว 0 มีทั้งหมด 1 และแถว 2 มีทั้งหมด 3s

ป้อนข้อมูล

matrix =
   [ 1 2 3 4 ]
   [ 1 2 3 4 ]
   [ 1 2 3 4 ]

ผลผลิต − จำนวนแถวในเมทริกซ์ที่ประกอบด้วยองค์ประกอบเดียวกันคือ − 0

คำอธิบาย - ทุกแถวมีองค์ประกอบที่แตกต่างกัน

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เรากำลังหาเมทริกซ์ในรูปของเวกเตอร์ของเวกเตอร์ เราจะสำรวจแต่ละเวกเตอร์และสร้างชุดสำหรับแต่ละแถว ใส่องค์ประกอบแถวในชุดนี้ต่อไป สุดท้ายถ้าชุดนี้มีเพียง 1 องค์ประกอบ (เอาขนาดชุด) จากนั้นแถวปัจจุบันจะมีองค์ประกอบเหมือนกันทั้งหมด

  • ใช้เมทริกซ์เป็นเวกเตอร์ > เมทริกซ์และเริ่มต้นมัน

  • คำนวณขนาดโดยใช้ matrix.size()

  • ฟังก์ชัน same_rows(vector> matrix, int size) ใช้เมทริกซ์และเป็นขนาดและส่งกลับจำนวนแถวที่มีองค์ประกอบเหมือนกัน

  • นับเริ่มต้นเป็น 0

  • สำรวจเมทริกซ์โดยใช้ for loop i=0 ถึง i=ขนาด

  • สำหรับแต่ละแถวที่เคลื่อนที่จาก j=0 ถึง j

  • นำ set set_row เพื่อจัดเก็บองค์ประกอบของแถวปัจจุบัน

  • เพิ่มองค์ประกอบให้กับชุดนี้สำหรับแถวปัจจุบันโดยใช้ set_row.insert(matrix[i][j])

  • ในตอนท้ายให้ตรวจสอบขนาดของ set_row หากเป็น 1 แถวนี้มีองค์ประกอบเหมือนกันทั้งหมด จำนวนที่เพิ่มขึ้น

  • เมื่อสิ้นสุดการวนซ้ำทั้งหมดสำหรับทุกแถว ให้นับเป็นผลลัพธ์สุดท้าย

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int same_rows(vector> matrix, int size){
   int count = 0;
   for (int i = 0; i < size; i++){
      set set_row;
      for (int j = 0; j < matrix[i].size(); j++){
         set_row.insert(matrix[i][j]);
      }
      int set_size = set_row.size();
      if (set_size == 1){
         count++;
      }
   }
   return count;
}
int main(){
   vector<vector<int>> matrix = {
      { 2, 2, 2, 2},
      { 5, 5, 5, 5 },
      { 2, 2, 2, 2 },
      {5, 5, 5, 5}
   };
   int size = matrix.size();
   cout<<"Count of rows in a matrix that consist of same element are: "<<same_rows(matrix, size);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of rows in a matrix that consist of same element are: 4