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+
- 下一篇: CSP认证201604-3路径解析[C+