沉没岛屿
import javax.xml.transform.Result;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int n,m;
static int[][] graph;
static int [][] visited;
static int [] dx={1,0,-1,0};
static int [] dy={0,1,0,-1};
static int result;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
graph = new int[n][m];
visited = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
graph[i][j] = in.nextInt();
}
}
//循环边界把与边界相连的路径都标记为访问过
for (int i=0;i<m;i++) {
dfs(0,i);
}
for (int i = 0; i <n ; i++) {
dfs(i,m-1);
}
for (int i = 0; i <m ; i++) {
dfs(n-1,i);
}
for (int i=0;i<n;i++)
{
dfs(i,0);
}
//如果没访问过且是陆地,则变为海洋
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if(graph[i][j]==1&&visited[i][j]!=1){
graph[i][j]=0;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(graph[i][j]+" ");
}
System.out.println();
}
}
//将连接的岛屿标记
static void dfs(int x,int y){
if (graph[x][y]==0||visited[x][y]==1) {
return;
}
visited[x][y]=1;
for (int i = 0; i <4 ; i++) {
int nextx=dx[i]+x;
int nexty=dy[i]+y;
if (nextx<0||nexty<0||nexty>=m||nextx>=n){
continue;
}
dfs(nextx,nexty);
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int n,m;
static int[][] graph;
static int [][] visited;
static int [] dx={1,0,-1,0};
static int [] dy={0,1,0,-1};
static int result;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
graph = new int[n][m];
visited = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
graph[i][j] = in.nextInt();
}
}
//循环边界把与边界相连的路径都标记为访问过
for (int i=0;i<m;i++) {
dfs(0,i);
}
for (int i = 0; i <n ; i++) {
dfs(i,m-1);
}
for (int i = 0; i <m ; i++) {
dfs(n-1,i);
}
for (int i=0;i<n;i++)
{
dfs(i,0);
}
//如果没访问过且是陆地,则变为海洋
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if(graph[i][j]==1&&visited[i][j]!=1){
graph[i][j]=0;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(graph[i][j]+" ");
}
System.out.println();
}
}
//将连接的岛屿标记
static void dfs(int x,int y){
if (graph[x][y]==0||visited[x][y]==1) {
return;
}
visited[x][y]=1;
for (int i = 0; i <4 ; i++) {
int nextx=dx[i]+x;
int nexty=dy[i]+y;
if (nextx<0||nexty<0||nexty>=m||nextx>=n){
continue;
}
dfs(nextx,nexty);
}
}
}
全部评论
相关推荐
点赞 评论 收藏
分享
2025-12-12 01:48
中国地质大学(武汉) Java 程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
