二维数组区块计数

输入一个只包含0和1的二维数组,上下左右和对角相邻的1组成一个区块,0不形成区块,求数组中的区块个数。

输入格式

第一行输入两个正整数N和M,N表示数组行数,M表示数组列数。

接下来N行,每行表示数组对应的一行,每行包含M个整数,整数之间用空格隔开。

输出格式

输出一个整数,表示数组中区块的个数。

代码:

#include<iostream>
using namespace std;
const int N= 1000010;
int a[ N ];
int n, m;

void dfs( int x, int y )
{
    a[ x * m + y ] = 0;
    for( int i = -1; i <= 1; i ++ )
    for( int j = -1; j <= 1; j ++ )
    {
        int dx = x + i;
        int dy = y + j;
        if( dx < 0 || dx >= n || dy < 0 || dy >= m || a[ dx * m + dy ] == 0 ) continue;
        dfs( dx, dy );
    }
}

int main()
{
    scanf( "%d %d", &n, &m );
    for( int i = 0; i < n; i ++ )
    for( int j = 0; j < m; j ++ )
    {
        scanf( "%d", & a[ i * m + j ]);
        
    }
    int ans = 0;
    for( int i = 0; i < n; i ++ )
    for( int j = 0; j < m; j ++ )
    {
        if( a[ i * m + j ] )
        {
            ans ++;
            dfs( i, j );
        }
    }
    printf( "%d\n", ans );
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,关于python二维数组多条件计数,我可以给您一些思路和代码实现。假设我们有一个二维数组arr,现在需要按照多个条件进行计数。以两个条件为例:如果arr[i][j]满足条件A并且满足条件B,则计数器count加1。可以使用双重循环遍历二维数组,使用if语句判断条件A和条件B是否同时满足,满足则count加1。 示例代码如下: count = 0 for i in range(len(arr)): for j in range(len(arr[i])): if 条件A and 条件B: count += 1 其中,条件A和条件B需要根据具体业务逻辑来定义和实现。 希望能帮到您,还有需要我回答的问题吗? ### 回答2: 要实现 Python 二维数组的多条件计数,可以通过遍历数组元素并应用条件进行计数的方式来实现。 首先,可以创建一个变量来记录满足条件的元素数量,初始值设为 0。然后,使用嵌套的 for 循环来遍历二维数组的每个元素。在每个元素上,进行多条件的判断,如果满足所有条件,就将计数变量加 1。最后,返回计数结果。 以下是一个简单的示例代码: ```python def count_multi_condition(array, condition1, condition2): count = 0 for row in array: for element in row: if condition1(element) and condition2(element): count += 1 return count ``` 在这个示例中,`array` 是二维数组,`condition1` 和 `condition2` 是两个用于判断元素是否满足条件的函数。函数 `count_multi_condition` 返回满足所有条件的元素数量。 假设有一个二维数组 `matrix`,我们想要统计满足两个条件的元素数量,条件是元素的值大于 5,且能被 3 整除。我们可以定义两个条件判断函数,并调用 `count_multi_condition` 来进行计数: ```python def greater_than_5(num): return num > 5 def divisible_by_3(num): return num % 3 == 0 matrix = [[1, 2, 3], [6, 7, 8], [9, 10, 11]] count = count_multi_condition(matrix, greater_than_5, divisible_by_3) print(count) # 输出结果为 2 ``` 这个例子输出的结果为 2,因为满足条件的元素有 6 和 9。所以我们可以使用 `count_multi_condition` 函数来计算二维数组中满足多个条件的元素数量。 ### 回答3: 在Python中,可以使用二维数组来存储数据,并且可以使用多个条件来计数。 首先,我们需要创建一个二维数组,可以使用列表嵌套的方式来创建。例如,我们可以创建一个3x3的二维数组: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ``` 接下来,我们可以使用两个嵌套的循环来遍历二维数组中的每一个元素,并通过判断条件来计数。例如,假设我们要计数二维数组中值为偶数且大于5的元素个数,可以使用如下代码: ```python count = 0 # 计数器变量 # 遍历二维数组 for row in matrix: for num in row: # 判断条件 if num % 2 == 0 and num > 5: count += 1 print(count) # 输出符合条件的元素个数 ``` 这段代码的运行结果将是2,因为二维数组中值为6和8的元素同时满足条件。 通过以上的方法,我们可以使用Python来实现对二维数组进行多条件的计数。这种方法适用于其他类型的判断条件,只需要修改判断条件的逻辑即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值