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

จำนวนองค์ประกอบของอาร์เรย์ที่มีอยู่ในทุกแถวของเมทริกซ์ NxM ใน C++


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

ป้อนข้อมูล

int arr ={2, 4, 6} และ int matrix[row][col] ={{ 2, 4, 6 }, {3, 4, 6}, {6, 2, 1}} 

ผลผลิต

องค์ประกอบของอาร์เรย์ในแถวที่ 1 ได้แก่ 3องค์ประกอบของอาร์เรย์ในแถวที่ 2 ได้แก่ 2องค์ประกอบของอาร์เรย์ในแถวที่ 3 ได้แก่ 2

คำอธิบาย

เรากำลังมีอาร์เรย์ที่มีองค์ประกอบ 2, 4 และ 6 เป็นองค์ประกอบ และตอนนี้เราจะตรวจสอบการเกิดขึ้นขององค์ประกอบ 3 รายการในทุกแถวของเมทริกซ์โดยจับคู่องค์ประกอบของอาร์เรย์กับองค์ประกอบของเมทริกซ์ เช่น 2, 4 และ 6 ทั้งหมดมีอยู่ในแถวแรกของเมทริกซ์ ดังนั้นการนับองค์ประกอบสำหรับแถวที่ 1 คือ 3 ในทำนองเดียวกัน การนับองค์ประกอบสำหรับแถวที่ 2 คือ 2 เนื่องจากมีเพียง 4 และ 6 เท่านั้นที่มีอยู่ และการนับองค์ประกอบสำหรับแถวที่ 3 คือ 2 เพียง 2 และ มี 6 ตัว

ป้อนข้อมูล

int arr ={ 1, 3} และ int matrix[row][col] ={ { 1, 4, 6 }, {3, 1, 6}, {6, 2, 4}}

ผลผลิต

องค์ประกอบของอาร์เรย์ในแถวที่ 1 คือ:1 องค์ประกอบของอาร์เรย์ในแถวที่ 2 ได้แก่:2องค์ประกอบของอาร์เรย์ในแถวที่ 3 ได้แก่ 0

คำอธิบาย

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

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

อาจมีหลายวิธีในการแก้ปัญหาที่กำหนด เช่น แนวทางไร้เดียงสาและแนวทางที่มีประสิทธิภาพ มาดูแนวทางไร้เดียงสากันก่อน .

  • ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและเมทริกซ์ของขนาดแถวและคอลัมน์

  • คำนวณขนาดของอาร์เรย์และส่งอาร์เรย์ เมทริกซ์ และขนาดของอาร์เรย์ไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

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

  • เริ่มการวนซ้ำ FOR จาก 0 จนถึงขนาดแถวของเมทริกซ์

  • ภายในลูป เริ่ม FOR จาก 0 จนถึงขนาดของอาร์เรย์

  • ตั้งอุณหภูมิด้วย arr[k]

  • เริ่มการวนซ้ำ FOR จาก 0 จนถึงขนาดคอลัมน์ของเมทริกซ์

  • ภายในลูป ให้ตรวจสอบ IF temp =matrix[i][j] แล้วเพิ่มจำนวนขึ้น 1

  • ตั้งค่าให้เป็น 0 เพื่อรีเฟรชหลังจากเปลี่ยนทุกแถว

  • พิมพ์ค่าการนับก่อนเปลี่ยนทุกแถว

แนวทางที่มีประสิทธิภาพ

  • ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและเมทริกซ์ของขนาดแถวและคอลัมน์

  • คำนวณขนาดของอาร์เรย์และส่งอาร์เรย์ เมทริกซ์ และขนาดของอาร์เรย์ไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

  • เริ่มการวนซ้ำ FOR จาก 0 จนถึงขนาดแถวของเมทริกซ์

  • สร้างตัวแปรประเภท unordered_map

  • เริ่มการวนซ้ำ FOR จาก 0 จนถึงขนาดคอลัมน์ของเมทริกซ์

  • ตั้งค่าแผนที่แบบไม่เรียงลำดับด้วย matrix[i][j] เป็น 1

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

  • ภายในลูป เริ่ม FOR จาก 0 จนถึงขนาดของอาร์เรย์

  • ตรวจสอบว่า um[arr[j]]==1 แล้วเพิ่มจำนวนขึ้น 1

  • พิมพ์ค่าการนับก่อนเปลี่ยนทุกแถว

ตัวอย่าง (แนวทางไร้เดียงสา)

#includeใช้เนมสเปซ std;#define row 3#define col 3void arr_matrix(int ​​matrix[row][col], int arr[], int size){ จำนวนเต็ม =0; // สำหรับแถวเมทริกซ์สำหรับ (int i=0; i 

ผลลัพธ์

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

องค์ประกอบของอาร์เรย์ในแถวที่ 1 ได้แก่ 3องค์ประกอบของอาร์เรย์ในแถวที่ 2 ได้แก่ 2องค์ประกอบของอาร์เรย์ในแถวที่ 3 ได้แก่ 2

ตัวอย่าง (แนวทางที่มีประสิทธิภาพ)

#include ใช้เนมสเปซ std;#define row 3#define col 3void arr_matrix(int ​​matrix[row][col], int arr[], int size){ สำหรับ (int i =0; i  อืม; สำหรับ (int j =0; j  

ผลลัพธ์

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

องค์ประกอบของอาร์เรย์ในแถวที่ 1 ได้แก่ 3องค์ประกอบของอาร์เรย์ในแถวที่ 2 ได้แก่ 2องค์ประกอบของอาร์เรย์ในแถวที่ 3 ได้แก่ 2