สมมติว่าเรามีสองอาร์เรย์ A และ B ขนาด N และ M ตามลำดับ และเรายังมีเมทริกซ์ไบนารี N X M หนึ่งรายการ โดยที่ 1 แสดงว่ามีเมทริกซ์จำนวนเต็มบวกในเมทริกซ์ดั้งเดิม และ 0 หมายความว่า ตำแหน่งถือ 0 ไว้ในเมทริกซ์เดิมด้วย เราต้องสร้างเมทริกซ์ดั้งเดิมเพื่อให้ A[i] หมายถึงองค์ประกอบที่ใหญ่ที่สุดในแถว ith และ B[j] หมายถึงองค์ประกอบที่ใหญ่ที่สุดในคอลัมน์ jth
ดังนั้น หากอินพุตเป็นเมทริกซ์ A =[4, 2, 3], B =[3, 1, 0, 0, 4, 0, 5] ผลลัพธ์จะเป็นเมทริกซ์
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
N :=ขนาด A
-
M :=ขนาด B
-
สำหรับผมอยู่ในช่วง 0 ถึง N ทำ
-
สำหรับ j ในช่วง 0 ถึง M ให้ทำ
-
ถ้า mat[i, j] เหมือนกับ 1 แล้ว
-
แสดงขั้นต่ำของ A[i] และ B[j]
-
-
มิฉะนั้น
-
พิมพ์ขึ้นบรรทัดใหม่
-
-
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def print_original_mat(A, B, mat) :N =len(A) M =len(B) for i in range(N) :สำหรับ j in range(M) :if (mat[i][j] ==1) :print(min(A[i], B[j]), end =" ") else :print(0, end =" ") print()A =[4, 2, 3]B =[3, 1, 0, 0, 4, 0, 5]เสื่อ =[ [1, 0, 0, 0, 1, 0, 1], [0, 0, 1, 0, 0, 1, 1], [1, 1, 0, 1, 1, 0, 0]]print_original_mat(A, B, mat);
อินพุต
<ก่อนหน้า>[4, 2, 3],[3, 1, 0, 0, 4, 0, 5],[1, 0, 0, 0, 1, 0, 1],[0, 0, 1 , 0, 0, 1, 1],[1, 1, 0, 1, 1, 0, 0]]ผลลัพธ์
3 0 0 0 4 0 40 0 0 0 0 0 23 1 0 0 3 0 0