读书人

有多少个这么的矩形?C语言题目

发布时间: 2012-12-31 11:57:52 作者: rapoo

有多少个这样的矩形?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;
}

读书人网 >C语言

热点推荐