เราได้รับอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็มและเมทริกซ์หรืออาร์เรย์ 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