สมมติว่าเรามี N X M สองตัวที่เรียกว่า mat1 และ mat2 ในการดำเนินการ เราสามารถทรานสโพสเมทริกซ์ย่อยกำลังสองใน mat1 เราต้องตรวจสอบว่าเราสามารถรับ mat2 จาก mat1 ได้หรือไม่โดยดำเนินการตามที่กำหนด
ดังนั้นหากอินพุตเป็นแบบ
5 | 6 | 7 |
1 | 2 | 3 |
6 | 8 | 9 |
5 | 6 | 2 |
1 | 7 | 3 |
6 | 8 | 9 |
ผลลัพธ์จะเป็น True เพราะหากเราได้รับทรานสโพสของเมทริกซ์ย่อยด้านบนขวาขนาด 2x2 ของ mat1 เราก็จะได้ mat2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- row :=จำนวนแถวของเมทริกซ์
- column :=จำนวนคอลัมน์ของเมทริกซ์
- สำหรับฉันในช่วง 0 ถึงแถว - 1 ทำ
- temp1 :=รายการใหม่ temp2 :=รายการใหม่
- r :=i, col :=0
- ในขณะที่ r>=0 และ col <คอลัมน์ ทำ
- แทรก mat1[r, col] ลงใน temp1
- แทรก mat2[r, col] ลงใน temp2
- r :=r - 1, col :=col + 1
- เรียงลำดับรายการ temp1 และ temp2
- สำหรับฉันในช่วง 0 ถึงขนาดของ temp1 - 1 ทำ
- ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
- คืนค่าเท็จ
- ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
- สำหรับ j ในช่วง 1 ถึงคอลัมน์ - 1 ทำ
- temp1 :=รายการใหม่ temp2 :=รายการใหม่
- r :=row - 1, col :=j
- ในขณะที่ r>=0 และ col <คอลัมน์ ทำ
- แทรก mat1[r, col] ลงใน temp1
- แทรก mat2[r, col] ลงใน temp2
- r :=r - 1, col :=col + 1
- เรียงลำดับรายการ temp1 และ temp2
- สำหรับฉันในช่วง 0 ถึงขนาดของ temp1 - 1 ทำ
- ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
- คืนค่าเท็จ
- ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
- คืนค่า True
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def dissolve(mat1, mat2):row =len(mat1) column =len(mat1[0]) for i in range(row):temp1 =[] temp2 =[] r =i col =0 while r>=0 และ col <คอลัมน์:temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -=1 col +=1 temp1.sort() temp2.sort() สำหรับฉันในช่วง (len (temp1)):ถ้า temp1[i] !=temp2[i]:คืนค่า False สำหรับ j ในช่วง (1 คอลัมน์):temp1 =[] temp2 =[] r =row - 1 col =j ในขณะที่ r>=0 และ col <คอลัมน์:temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -=1 col +=1 temp1.sort() temp2 sort() สำหรับฉันในช่วง (len(temp1)):ถ้า temp1[i] !=temp2[i]:return ค่าเท็จ return Truemat1 =[ [5, 6, 7], [1, 2, 3], [6 , 8, 9]]mat2 =[ [5, 6, 2], [1, 7, 3], [6, 8, 9]]print(solve(mat1, mat2))
อินพุต
<ก่อนหน้า>[ [5, 6, 7], [1, 2, 3], [6, 8, 9]],[ [5, 6, 2], [1, 7, 3], [6, 8 , 9]]ผลลัพธ์
จริง