201604-2 俄羅斯方塊

讀完題目最初的想法是使用for循環(huán)模擬方塊下落,

在此之前,要對方塊數(shù)據(jù)進行處理:最下方全0行清除掉

在下落到當前行時判斷是否有方塊(即當前格子的數(shù)據(jù)為1),然后預(yù)判方塊會不會發(fā)生碰撞,以及何時碰撞(再下落幾格會碰撞)?;蛘卟粫l(fā)生碰撞,直接下落到底。

實現(xiàn)起來比較復(fù)雜,能通過大部分樣例(90分)

但是有一部分樣例是無法通過的,他們的共性就是在同一行中,從左至右,如果左邊首先預(yù)判會在下落兩個后發(fā)生碰撞,就會結(jié)束判斷,然后宣布找到碰撞值并開始合并。哪怕右邊在此時已經(jīng)發(fā)生了碰撞,也會被忽略掉。
具體的出問題例程:

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

正確輸出應(yīng)該是:

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

在研究了滿分算法后,得到啟發(fā):

標準方塊固定為4個,可以先將4個方塊的坐標值存儲起來,然后模擬下落,每一行只判斷四個方塊是否會發(fā)生碰撞,依然是只要出現(xiàn)一個發(fā)生碰撞,就宣布找到落點,并且合并數(shù)據(jù)(區(qū)別是不進行預(yù)判是否將要碰撞)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容