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

ตรวจสอบว่าเป็นไปได้หรือไม่ที่จะสร้างเมทริกซ์สองตัวให้เพิ่มขึ้นโดยการแลกเปลี่ยนค่าที่สอดคล้องกันใน Python . เท่านั้น


สมมติว่าเรามีเมทริกซ์ขนาด n x m สองตัวชื่อ mat1 และ mat2 เราต้องตรวจสอบว่าเมทริกซ์สองตัวนี้เพิ่มขึ้นอย่างเคร่งครัดหรือไม่โดยการสลับเพียงสององค์ประกอบในเมทริกซ์ที่ต่างกันก็ต่อเมื่ออยู่ที่ตำแหน่ง (i, j) ในเมทริกซ์ทั้งสอง

ดังนั้นหากอินพุตเป็นแบบ

7 1
5
1
6
1
0


1
4
9
8 1
7

จากนั้นผลลัพธ์จะเป็น True เนื่องจากเราสามารถสลับคู่ (7, 14) และ (10, 17) เพื่อให้เพิ่มขึ้นอย่างเคร่งครัด

1
4
1
5
1
6
1
7


7 9
8 1
0

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • row :=จำนวนแถวของ mat1
  • col :=จำนวนคอลัมน์ของ mat1
  • สำหรับฉันในช่วง 0 ถึงแถว - 1 ทำ
    • สำหรับ j ในช่วง 0 ถึง col - 1 ทำ
      • ถ้า mat1[i,j]> mat2[i,j] แล้ว
        • สลับ mat1[i, j] และ mat2[i, j]
    • สำหรับฉันในช่วง 0 ถึงแถว - 1 ทำ
      • สำหรับ j ในช่วง 0 ถึง col-2 ทำ
        • ถ้า mat1[i, j]>=mat1[i, j + 1] หรือ mat2[i, j]>=mat2[i, j + 1] แล้ว
          • คืนค่าเท็จ
    • สำหรับฉันในช่วง 0 ถึงแถวที่ 2 ทำ
      • สำหรับ j ในช่วง 0 ถึง col - 1 ทำ
        • ถ้า mat1[i, j]>=mat1[i + 1, j] หรือ mat2[i, j]>=mat2[i + 1, j] แล้ว
          • คืนค่าเท็จ
  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def Solve(mat1, mat2):row =len(mat1) col =len(mat1[0]) for i in range(row):for j in range(col):if mat1[i][j]> mat2[i][j]:mat1[i][j], mat2[i][j]=mat2[i][j], mat1[i][j] สำหรับฉันในช่วง (แถว):สำหรับ j in range(col-1):if mat1[i][j]>=mat1[i][j + 1] or mat2[i][j]>=mat2[i][j + 1]:คืนค่า False สำหรับ ฉันอยู่ในช่วง (แถว-1):สำหรับ j ในช่วง (col):ถ้า mat1[i][j]>=mat1[i + 1][j] หรือ mat2[i][j]>=mat2[i + 1][j]:return False return Truemat1 =[[7, 15], [16, 10]]mat2 =[[14, 9], [8, 17]]print(solve(mat1, mat2)) 

อินพุต

[[7, 15],[16, 10]],[[14, 9],[8, 17]]

ผลลัพธ์

จริง