สมมติว่าเรามีเมทริกซ์กำลังสองของคำสั่ง m x m; เราต้องหาองค์ประกอบที่แตกต่างกันทั้งหมดที่มีร่วมกันในทุกแถวของเมทริกซ์ที่กำหนด
ดังนั้นหากอินพุตเป็นแบบ
13 | 2 | 15 | 4 | 17 |
15 | 3 | 2 | 4 | 36 |
15 | 2 | 15 | 4 | 12 |
15 | 26 | 4 | 3 | 2 |
2 | 19 | 4 | 22 | 15 |
ผลลัพธ์ที่ได้จะเป็น [2,4,15]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน sortRows() นี่จะใช้เมทริกซ์
-
n :=จำนวนแถว
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
จัดเรียงรายการเมทริกซ์[i]
-
-
ในวิธีหลัก ให้ทำดังต่อไปนี้ −
-
n :=จำนวนแถว
-
sortRows(เมทริกซ์)
-
current_idx :=รายการขนาด n เติม 0
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
current_idx[i] :=0
-
-
ฉ :=0
-
ในขณะที่ current_idx[0]
-
ค่า :=matrix[0, current_idx[0]]
-
ปัจจุบัน :=จริง
-
สำหรับผมอยู่ในช่วง 1 ถึง n ทำ
-
ในขณะที่ (current_idx[i]
-
current_idx[i] :=current_idx[i] + 1
-
-
ถ้า matrix[i, current_idx[i] - 1] ไม่เหมือนกับค่า ดังนั้น
-
ปัจจุบัน :=เท็จ
-
-
ถ้า current_idx[i] เหมือนกับ n แล้ว
-
ฉ :=1
-
ออกจากวง
-
-
-
ถ้า present ไม่ใช่ศูนย์ แล้ว
-
ค่าที่แสดง
-
-
ถ้า f เท่ากับ 1 แล้ว
-
ออกจากวง
-
-
current_idx[0] :=current_idx[0] + 1
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
MAX =100def sortRows(matrix):n =len(matrix) สำหรับ i ในช่วง (0, n):matrix[i].sort();def find_common(matrix):n =len(matrix) sortRows( เมทริกซ์) current_idx =[0] * n สำหรับ i ในช่วง (0, n):current_idx[i] =0 f =0 while(current_idx[0]อินพุต
<ก่อน>[[13, 2, 15, 4, 17],[15, 3, 2, 4, 36],[15, 2, 15, 4, 12],[15, 26, 4, 3, 2 ],[2, 19, 4, 22, 15]]
ผลลัพธ์
2, 4, 15,