题意:给你一个n阶立方体,某些单位立方体缺失(剩下部分可以不连通)。未缺失的单位立方体6个面的颜色均相同。现给出该n阶立方体的6个面的视图,求这个立方体最多可以包含多少个单位立方体。
由于n <= 10,所以我想直接暴力。当然,并不是暴力枚举每个立方体是否存在,那样的话时间复杂度将会是O(2^(n^3)),肯定TLE。我们假设这个立方体是完整的,然后规定一种操作:当前状态下依次判断每一个立方体是否符合所给出的视图。如果某个单位立方体不符合,则令该单位立方体缺失,然后重复这个操作。直到某次操作没有减少任何一个单位立方体,则剩下的就是最大可以包含的单位立方体数。判断单位立方体是否符合视图(即是否应该缺失)用如下规则:
1、若该单位立方体向6个面投影的视图中对应的位置为 '.' ,则该立方体缺失。
2、若该单位立方体向某个面投影的路径上有其他立方体存在,则该单位立方体向这个面的投影不用考虑。
3、若该单位立方体向某个面投影的路径上没有其他立方体存在,则该单位立方体的颜色必须与向这个面投影的视图的对应位置的颜色一样。否则该单位立方体缺失。
4、若该单位立方体向6个面投影均满足视图,则该单位立方体可以不缺失。