当前位置:网站首页>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;
}
边栏推荐
- Using HashMap to realize simple cache
- Insert sort
- xftp7与xshell7下载(官网)
- [merge array] 88 merge two ordered arrays
- [binary search] 34 Find the first and last positions of elements in a sorted array
- Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
- Count sort
- Solon Logging 插件的添加器级别控制和日志器的级别控制
- 注解与反射
- C language Essay 1
猜你喜欢
随机推荐
The next key of win generates the timestamp file of the current day
Using HashMap to realize simple cache
[to be continued] [UE4 notes] L3 import resources and project migration
26、 File system API (device sharing between applications; directory and file API)
[merge array] 88 merge two ordered arrays
A problem and solution of recording QT memory leakage
[turn to] MySQL operation practice (III): table connection
Add level control and logger level control of Solon logging plug-in
Solon Logging 插件的添加器级别控制和日志器的级别控制
小程序直播+電商,想做新零售電商就用它吧!
sync.Mutex源码解读
Romance of programmers on Valentine's Day
YOLOv5添加注意力機制
The present is a gift from heaven -- a film review of the journey of the soul
Use the command character to close the keyboard command of the notebook
[es practice] use the native realm security mode on es
Drawing dynamic 3D circle with pure C language
Applet Live + e - commerce, si vous voulez être un nouveau e - commerce de détail, utilisez - le!
PMP考试敏捷占比有多少?解疑
浅谈JVM(面试常考)