32. 迷你數獨 迷你數獨由4*4個格子組成,每格空白或1~4間的整數,而4*4個格子又可以被分為左上、右上、左下、右下4個2*2大小的區域。例如以下的迷你數獨矩陣: 3 1 4 2 4 2 3 1 1 3 2 4 2 4 1 3 此矩陣又可分為左上、右上、左下、右下4個2*2大小的區域 (Block),以上面的矩陣為例,左上區域為 3 1 4 2 右下區域為 2 4 1 3 矩陣中的值須滿足以下數獨規則: 1. 每個直欄 (Column)中,數字1~4皆不能缺少也不會重複出現。 2. 每個橫列 (Row)中,數字1~4皆不能缺少也不會重複出現。 3. 每個區域(Block)中,數字1~4皆不能缺少也不會重複出現。 本題目需計算出完整的迷你數獨矩陣,例如輸入矩陣: 0 0 0 0 0 2 3 1 0 3 2 4 2 0 0 3 其中: (1) 本題目0 表示需要程式計算取代數字的地方; (2) 本題目非0數字固定8個; (3) 本題目至少2個直欄、橫列、或區域,存在一個0, 計算出完整數獨矩陣步驟: (1)右下區域中已知有[2 3 4],因此0應被取代為1。 (2) index=3的直欄 (Column)已有[1 3 4],因此0應被取代為2。 (3) index=1的橫列(Row)已有[1 2 3],因此0應被取代為4。 (4) index=2的橫列(Row)已有[2 3 4],因此0應被取代為1。 因此矩陣變為 0 0 0 2 4 2 3 1 1 3 2 4 2 0 1 3 繼續第二、三輪計算,即可完成所有0的替換。 【輸入說明】 輸入共有4行,每行有4個0~4的整數,其中0表示空白的格子,輸入的每個整數中間以一個空白隔開,表示一個4*4迷你數獨的初始狀態 【輸出說明】 輸出共有4行,每行有4個1~4的整數,每個整數間以一個空白隔開。表示一個4*4迷你數獨的結果,且結果符合數獨規則。 【測試資料一】 輸入: 3 0 1 4 0 0 0 2 2 0 4 0 1 4 0 0 輸出: 3 2 1 4 4 1 3 2 2 3 4 1 1 4 2 3 【測試資料二】 輸入: 1 0 4 2 4 0 3 0 0 1 0 4 0 0 1 0 輸出: 1 3 4 2 4 2 3 1 3 1 2 4 2 4 1 3 【測試資料三】 輸入: 1 0 0 0 4 2 3 0 0 0 1 0 3 1 0 2 輸出: 1 3 2 4 4 2 3 1 2 4 1 3 3 1 4 2 【隱藏測試資料一】 輸入: 0 2 3 0 4 0 0 2 0 0 0 3 3 4 0 1 輸出: 1 2 3 4 4 3 1 2 2 1 4 3 3 4 2 1 【隱藏測試資料二】 輸入: 0 4 0 0 2 3 4 0 0 0 2 0 4 2 0 3 輸出: 1 4 3 2 2 3 4 1 3 1 2 4 4 2 1 3 【隱藏測試資料三】 輸入: 1 3 0 0 0 2 1 0 3 0 2 0 0 4 3 0 輸出: 1 3 4 2 4 2 1 3 3 1 2 4 2 4 3 1