题:一个只包含0和1的阵列,找到1的组的个数,每个组的定义是横向和纵向相邻的值都为1。
解法:深度优先搜索
class Solution
{
public:
int Group_one_num(vector<int>& nums)
{
int ans=0;
if(nums.empty()) return ans;
for(int i=0;i<nums.size();i++)
{
for(int j=0;j<nums[0].size();j++)
{
if(nums[i][j]==1)
{
dfs(nums,i,j);
ans++;
}
}
}
return ans;
}
void dfs(vector<int>& nums,int i,int j)
{
if(i<0 || j<0 || i>=nums.size() || j>=nums[0].size() || nums[i][j]==0)
return;
nums[i][j]==0;
dfs(nums,i-1,j);
dfs(nums,i+1,j);
dfs(nums,i,j-1);
dfs(nums,i,j+1);
}
};