สมมติว่าเรามีเมทริกซ์ไบนารีของคำสั่ง 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