CSP认证201604-2俄罗斯方块[C++题解]:模拟、枚举
生活随笔
收集整理的這篇文章主要介紹了
CSP认证201604-2俄罗斯方块[C++题解]:模拟、枚举
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目分析
來源:acwing
分析:
對了,剛開始的時候沒看懂16 ~ 19行是啥意思?后來才知道,樣例中表示的是俄羅斯方塊中的L方塊。 這4行僅僅表示1個方塊!
0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0怎么找到被卡住的位置?其實,從上到下開始枚舉,這里需要找到第一個發生重疊的時刻,它的上一個時刻就是被卡住的位置。
復制一個新畫布s,畫圖的時候會在那個位置++,因為只有零和一,然后當有個點s[a][b] == 2的時候,說明發生了重疊,這樣我們需要返回到上一次畫的位置。
這樣做的話,需要考慮一種邊界情況,就是直到最下面也沒有發生重疊,為了處理這種情況,我們在畫布的最下層加入一行 g[15][] = 1,這樣就可以處理這種情況了。
ac代碼
題目鏈接
https://www.acwing.com/problem/content/3231/
總結
以上是生活随笔為你收集整理的CSP认证201604-2俄罗斯方块[C++题解]:模拟、枚举的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSP认证201604-1折点计数[C+
- 下一篇: s3c2440移植MQTT