1. 程式人生 > >2018年新生個人訓練賽第十一場(第27屆寧波市資訊學競賽小學組,初中組)

2018年新生個人訓練賽第十一場(第27屆寧波市資訊學競賽小學組,初中組)

Windows 中的掃雷遊戲是大家都熟悉的小遊戲,今天,味味也設計了一個簡易的掃雷遊戲。味 味設計的掃雷遊戲功能如下:
1.程式一開始會讀入掃雷區域大小 n,表示遊戲區域有 n*n 個小方格組成,接下來會讀入 n 行 資訊,每行有 n 個整數(每個整數可能是 0,也可能是 1),每兩個整數之間用一個空格分隔。其中 0 所在位置表示該小方格內沒有地雷,1 所在位置表示該小方格內有地雷(遊戲開始時,掃雷區域 中必定包含至少一個地雷)。 
接下來每行輸入兩個用空格分開的正整數 i 和 j,每一行的一對 i 和 j 表示使用者用滑鼠單擊掃 雷區域中第 i 行第 j 列位置上的小方格(就象我們使用 Windows 中掃雷遊戲一樣),i 和 j 表示的 位置必定在掃雷區域內。程式每輸入一對 i 和 j,就馬上進行相應的處理(就象我們在 Windows 中 滑鼠單擊某個小方塊就會出現結果一樣)。 

2.程式將根據讀入的一組 i 和 j 的值來對掃雷區域作相應處理,具體的處理規則如下: 
(1)如果 i 和 j 表示的小方格內沒有地雷、而且也沒有被處理過(就是第 i 行第 j 列的數值 是 0),那麼將以該小方格為中心的一個正方形區域內所有沒有地雷的小方格都賦值為-1(表示該 區域的地磚已經被掀開了)。如果在當前正方形區域內有一個位置號為 i1 和 j1(注意:i1<>i 並且 j1<>j)的小方格內恰好有地雷,則此地雷就被順利掃除,將該位置標記為-2。如果該正方形區域 內某些小方格已經被處理過,則對這些小方格不再做任何處理。 
舉個例子來說明一下,假如輸入資訊如下左邊所示,那麼處理結果就如下右邊所示: 

(2)如果 i 和 j 表示的小方格已經被處理過(就是第 i 行第 j 列的數值是-1 或者是-2),那 麼不作任何處理,繼續去讀取下一行的 i 和 j 的值。 
(3)如果 i 和 j 表示的小方格剛好有地雷,並且該小方格沒有被處理過(就是第 i 行第 j 列
的數值是 1),那麼表示使用者觸雷,馬上輸出資訊“GAME  OVER!”,程式結束。 
3.如果在讀入 i 和 j 的過程中一直沒有觸雷,那麼就一直按照位置資訊處理下去,直到滿足下 列條件之一,就輸出相應資訊並結束程式: 
(1)讀入的 i 和 j 的值都是 0(表示使用者不再在某個小方格內單擊滑鼠右鍵了),則輸出處理 後整個掃雷區域的狀態(就是輸出 n 行 n 列的方陣,每行中兩個整數之間用一個空格分隔,末尾沒 有多餘空格),然後程式結束。 

(2)如果某次處理完後,遊戲區域內所有的地雷都被掃除了,那麼不必再讀入下一行的資訊, 輸出資訊“YOU ARE WINNER!”,程式結束。