这道题首先我们发现只要固定正方形两条相邻边,就可以得到这个正方形的具体信息。 但是直接固定两条边需要枚举三个点,复杂度比较高。
我们完全可以枚举一条边,然后将这条边顺时针或者逆时针旋转90度,从而实现固定两条边。这样只需要枚举两个点即可。
然后一个正方形按照这样的寻找策略会被找到4次,因此最后答案要除4。
时间复杂度:O(n2m2)
小红喜欢玩王者,尤其擅长奕星,并且时常沉迷于用奕星的大招困住敌人。
所以他设计了一个巨大棋局,棋盘中的格子只有两种可能,如果是 ′X′ 则表示这个格子可以作为棋盘的一个边角,如果是 ′.′ 则表示不可以。
小红要按这个棋局的情况去进行奕星的大招练习,即选择四个为 ′X′ 的不同格子,这四个格子可以构成一个正方形棋盘。
现在小红想问你,可以获得多少个不同的正方形棋盘。
两个棋盘相同当且仅当四个边角都可以完全对应上,否则就是不同的正方形棋盘。
第一行,一个正整数n,m,代表巨大棋局的大小
接下来n行,每行一个长度为m的字符串,仅包含′.′和′X′。
1≤n,m≤50
一个整数,表示可以获得的不同棋盘的数量。
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
4 4
XX.X
XX.X
.X.X
..X.
输出
2
说明 第一个正方形棋盘为:(1,2),(3,2),(1,4),(3,4)
第二个正方形棋盘为:(1,1),(1,2),(2,1),(2,2)