有多少个这样的矩形?C语言题目
在一个二维数组中。。
1.ABCDEA
2.ACADDC
3.AEADEE
4.BEADEE
5.ACADDC
比如说其中的第3行和第4行 组成了四个定点都是E的矩形,
请问一个二维数组中有多少个这样的矩形?当然会提前给你数据。
求思路啊。简单的和难的都说说,谢谢
[解决办法]
根据你的描述,似乎只需要判断四个点组成的小矩形,那么针对点(i,j)的代码是:
if( a[i][j] == a[i + 1][j]
&& a[i][j] == a[i][j + 1]
&& a[i][j] == a[i + 1][j + 1] )
++rectangle;
int a[20][20];
// 全局变量: a[row][col]
// 输入: row 矩阵行数 col 矩阵列数
// 输出: 矩形个数
int countRectanglex(int row, int col)
{
int i, j, icursor, jcursor, count;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
for (icursor = 0; icursor <= row - i; icursor++)
for (jcursor = 0; jcursor <= col - j; jcursor++)
count += _countRectangle(i, j, icursor, jcursor);
return count;
}
// 判断坐标(i,j)至(i+x,j+y)是否为一个矩形
int _countRectangle(int i, int j, int x, int y)
{
int t;
for (t = 0; t <= x; t++)
if (a[i][j] != a[i + t][j + y]
[解决办法]
a[i][j] != a[i + t][j])
return 0;
for (t = 0; t <= y; t++)
if (a[i][j] != a[i + x][j + t]
[解决办法]
a[i][j] != a[i][j + t])
return 0;
return 1;
}