题目链接:
就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到一个1,重复此操作。
Accept
import java.util.Scanner;public class Main { static int old=0; static int N; static int M; static char array[][]; static int x[]={-1,0,1,0}; //上左下右 static int y[]={0,1,0,-1}; static void solve(char array[][],int i,int j){ array[i][j]='0'; for(int d=0;d<4;d++){ int dx=i+x[d]; int dy=j+y[d]; if(dx<0 || dy<0 || dx>N-1 || dy>M-1){ //越界判断 continue; } if(array[dx][dy]=='1'){ //深搜覆盖这个岛屿 array[dx][dy]='0'; solve(array,dx,dy); } } } public static void main(String[] args){ Scanner reader=new Scanner(System.in); int T=reader.nextInt(); while(T>=1){ old=0; N=reader.nextInt(); M=reader.nextInt(); array=new char[N][M]; for(int i=0;i