首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-12-31 
有多少个这样的矩形?C语言题目在一个二维数组中。。1.ABCDEA 2.ACADDC3.AEADEE4.BEADEE5.ACADDC比如说其中的

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

热点排行