荣誉版主
- 积分
- -2403
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2010-5-4
- 最后登录
- 1970-1-1
|
就是递归+记录pass过的
- void ClearConnected(int** pPlane, int m, int n, int x, int y)
- {
- assert(pPlane && m > 0 && n > 0);
- if (x < 0 || x >= m) return;
- if (y < 0 || y >= n) return;
- if (0 == pPlane[x][y])
- return;
- if (1 == pPlane[x][y])
- pPlane[x][y] = 0;
- ClearConnected(pPlane, m, n, x+1, y);
- ClearConnected(pPlane, m, n, x-1, y);
- ClearConnected(pPlane, m, n, x, y+1);
- ClearConnected(pPlane, m, n, x, y-1);
- ClearConnected(pPlane, m, n, x-1, y+1);
- ClearConnected(pPlane, m, n, x+1, y+1);
- ClearConnected(pPlane, m, n, x-1, y-1);
- ClearConnected(pPlane, m, n, x+1, y-1);
- }
- int CountBlackRegions(int** pPlane, int m, int n)
- {
- assert(pPlane && m > 0 && n > 0);
- int nCount = 0;
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- {
- if (1 == pPlane[i][j])
- {
- nCount++;
- ClearConnected(pPlane, m, n, i, j);
- }
- }
- return nCount;
- }
复制代码 |
|