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