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

โปรแกรมหาจำนวนตำแหน่งพิเศษในเมทริกซ์ไบนารีโดยใช้ Python


สมมติว่าเรามีเมทริกซ์ไบนารีของคำสั่ง m x n เราต้องหาจำนวนตำแหน่งพิเศษในเมทริกซ์ ตำแหน่ง (i,j) เป็นตำแหน่งพิเศษเมื่อ mat[i,j] =1 และองค์ประกอบอื่นๆ ทั้งหมดในแถว i และคอลัมน์ j เป็น 0

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

1 0 0 0 0
0 0 1 0 0
0 0 0 1 1
0 1 0 0 0

จากนั้นผลลัพธ์จะเป็น 3 ส่วนตำแหน่งพิเศษคือ (0, 0), (1,2) และ (3,1)

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

  • พิเศษ :=0

  • สำหรับฉันในช่วง 0 ถึงจำนวนแถวของเมทริกซ์ ทำ

    • ถ้าจำนวน 1s ในเมทริกซ์แถว[i] คือ 1 ดังนั้น

      • numOfOne :=0

      • indexOfOne :=ตำแหน่งของ 1 ในเมทริกซ์[i]

      • สำหรับ j ในช่วง 0 ถึงขนาดคอลัมน์ของเมทริกซ์ ให้ทำ

        • ถ้า matrix[j, indexOfOne] เหมือนกับ 1 แล้ว

          • numOfOne :=numOfOne + 1

        • ถ้า numOfOne> 1 แล้ว

          • ออกจากวง

      • ถ้า numOfOne เหมือนกับ 1 แล้ว

        • พิเศษ :=พิเศษ + 1

  • คืนสินค้าพิเศษ

ตัวอย่าง (Python)

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

defแก้ปัญหา(เมทริกซ์):พิเศษ =0 สำหรับฉันในช่วง (เลน (เมทริกซ์)):ถ้าเมทริกซ์[i] .count(1) ==1:numOfOne =0 indexOfOne =เมทริกซ์[i].index(1 ) สำหรับ j ในช่วง (len(เมทริกซ์)):ถ้า matrix[j][indexOfOne] ==1:numOfOne +=1 ถ้า numOfOne> 1:แตกถ้า numOfOne ==1:พิเศษ +=1 ส่งคืนเมทริกซ์พิเศษ =[[1 ,0,0,0,0], [0,0,1,0,0], [0,0,0,1,1], [0,1,0,0,0]]พิมพ์(แก้(แก้( เมทริกซ์))

อินพุต

<ก่อน>[[1,0,0,0,0],[0,0,1,0,0],[0,0,0,1,1],[0,1,0,0,0 ]]

ผลลัพธ์

3