เราได้รับเมทริกซ์ที่ประกอบด้วยจำนวนเต็ม เป้าหมายคือการหาจำนวนแถวในเมทริกซ์ที่มีองค์ประกอบเหมือนกันทั้งหมด
หากมีเมทริกซ์ขนาด 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
คำอธิบาย - ทุกแถวมีองค์ประกอบที่แตกต่างกัน
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
เรากำลังหาเมทริกซ์ในรูปของเวกเตอร์ของเวกเตอร์
-
ใช้เมทริกซ์เป็นเวกเตอร์
> เมทริกซ์และเริ่มต้นมัน -
คำนวณขนาดโดยใช้ 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