当前位置:网站首页>The number of enclaves
The number of enclaves
2022-07-05 05:27:00 【low dog】
The number of enclaves
stay m*n The size of gird in , among 0 On behalf of the ocean ,1 Representing land , The title is to find the number of lands wrapped by the ocean , Finally, return the number of lands surrounded by the ocean .
Their thinking
First, the enclave problem is a simple matrix traversal problem , A little method is added to the basic matrix traversal , The enclave problem is solved .
First, we create a method ,DFS Method ( Depth first search method )
void DFS(int** grid,int i,int j,int n,int* m){
if(i<0||j<0||j=>m||i=>n) return;
if(grid[i][j]==0) return;
grid[i][j]=0;
DFS(grid,i,j+1,n,m);
DFS(grid,i,j-1,n,m);
DFS(grid,i+1,j,n,m);
DFS(grid,i-1,j,n,m);
}
The idea of recursion is also used here, which will be discussed in Chapter i+1 That's ok , The first j+1 Check the upper, lower, left and right nodes of the elements of the column , If it is land, change it into ocean , Because in C Language cannot be used grid.length,grid[0].length. So at the end of this function, we add the length and width of the whole matrix .( If a boss finds out how to put the long broadband of the matrix into this method, he hopes to leave your footprints in the comment area , Xiaobai really needs your help )
Second, let's first make sure that nothing at the boundary of the matrix counts , Then we will first eliminate the land around the boundary , The elimination method is to call the above method to find the land near the boundary , And change them into oceans ( For convenience, we use n,m)
for(int i=0;i<n;i++){
DFS(grid,i,0,n,m);
DFS(grid,i,m-1,n,m);
}
for(int j=0;j<m;j++){
DFS(grid,0,j,n,m);
DFS(grid,n-1,j,n,m);
}
Finally, we traverse the matrix directly 1 The node of , Count with one parameter .( You can check the number of islands in )
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
if(grid[i][j]==1) sum++;
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
if(grid[i][j]==1){
sum++;
DFS(grid,i,j,n,m); // Add this if you want to query the number of islands
}
}
Add the return value at the end to complete .( Here's the complete code )
Complete code
void Dfs(int** grid,int i,int j,int n,int* m){
if(i<0||j<0||i>=n||j>=*m) return;
if(grid[i][j]==0) return;
grid[i][j]=0;
Dfs(grid,i,j+1,n,m);
Dfs(grid,i,j-1,n,m);
Dfs(grid,i+1,j,n,m);
Dfs(grid,i-1,j,n,m);
}
int numEnclaves(int** grid, int n, int* m){
int sum=0;
for(int i=0;i<n;i++){
Dfs(grid,i,0,n,m);
Dfs(grid,i,*m-1,n,m);
}
for(int j=0;j<*m;j++){
Dfs(grid,0,j,n,m);
Dfs(grid,n-1,j,n,m);
}
for(int i=0;i<=m-1;i++)
for(int j=0;j<*m;j++){
if(grid[i][j]==1){
sum++;
}
}
return sum;
}
边栏推荐
- [转]MySQL操作实战(三):表联结
- Use of room database
- 第六章 数据流建模—课后习题
- Haut OJ 1321: mode problem of choice sister
- Optimization scheme of win10 virtual machine cluster
- Es module and commonjs learning notes -- ESM and CJS used in nodejs
- 2022上半年全国教师资格证下
- Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
- Quick sort summary
- Haut OJ 1350: choice sends candy
猜你喜欢
剑指 Offer 58 - II. 左旋转字符串
利用HashMap实现简单缓存
[turn to] MySQL operation practice (III): table connection
第六章 数据流建模—课后习题
Use of snippets in vscode (code template)
Pointnet++的改进
剑指 Offer 53 - I. 在排序数组中查找数字 I
[to be continued] [UE4 notes] L3 import resources and project migration
[to be continued] [UE4 notes] L2 interface introduction
A new micro ORM open source framework
随机推荐
sync.Mutex源码解读
Reader writer model
Optimization scheme of win10 virtual machine cluster
A problem and solution of recording QT memory leakage
[turn to] MySQL operation practice (I): Keywords & functions
Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
剑指 Offer 05. 替换空格
[interval problem] 435 Non overlapping interval
Learning notes of "hands on learning in depth"
[turn]: OSGi specification in simple terms
Developing desktop applications with electron
剑指 Offer 58 - II. 左旋转字符串
剑指 Offer 06.从头到尾打印链表
Solon 框架如何方便获取每个请求的响应时间?
C语言杂谈1
搭建完数据库和网站后.打开app测试时候显示服务器正在维护.
Haut OJ 1221: a tired day
[转]MySQL操作实战(一):关键字 & 函数
GBase数据库助力湾区数字金融发展
Talking about JVM (frequent interview)