首页 > 试题广场 >

小红的棋盘

[编程题]小红的棋盘
  • 热度指数:270 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红有一个大小为 n \times m 的棋盘,'.' 表示这个格子没有棋子,'X' 表示这个格子有棋子。
i 行第 j 列的格子可以用一个坐标 (i, j) 表示。
小红想选出四个棋子,对应坐标分别为 (x_1, y_1), (x_2, y_2), (x_3, y_3), (x_4, y_4),使得这四个坐标构成一个正方形,小红有多少种方案。

如果两个方案有任意一个棋子的坐标不同,那么就认为是两种不同的方案。

输入描述:
第一行一个正整数n, m,代表棋盘的大小。
接下来 n 行,每行一个长度为 m 的字符串,仅包含 '.' 和 'X'。
1\leq n, m \leq 50


输出描述:
一个整数,代表最终的方案数
示例1

输入

4 4
XX..
XXX.
.X.X
..X.

输出

3

说明

第一个正方形:(1, 1) (1, 2) (2, 1) (2, 2)
第二个正方形:(2, 3) (3, 2) (3, 4) (4, 3)
第三个正方形:(1, 2) (2, 1) (2, 3) (3, 2)
头像 丨阿伟丨
发表于 2025-09-16 14:08:34
题目链接 小红的棋盘 题目描述 小红有一个大小为 的棋盘,'.' 表示这个格子没有棋子,'X' 表示这个格子有棋子。 小红想选出四个棋子,使得这四个棋子的坐标构成一个正方形。 问小红有多少种选择方案。如果两个方案有任意一个棋子的坐标不同,那么就认为是两种不同的方案。 解题思路 1. 核心思想 问题 展开全文
头像 阿清11111
发表于 2025-05-13 20:35:20
n,m=map(int,input().split()) board=[input().strip() for _ in range(n)] count=0 points=[] point_set=set(points) for i in range(n): for j in range( 展开全文