import java.util.Scanner;
/**
* 该题使用了深度优先算法dfs用于把相连的#号当成一块大陆,并通过数组记录下有几块大陆
* dfs算法并不难,只要对用dfs处理过后留下的aes数组和sea数组进行处理得到结果即可
* 我的思路就是
* 1、sea数组记录源数据,然后判断是否被淹赋‘*’号记录
* 2、aes数组使用dfs算法把第一块大陆标记为1,第二块标记为2,以此类推
* 3、最后假设num块大陆全部被淹,遍历sea数组如果有‘#’号则判断是第几块大陆,没有重复就使num减一
* 4、最后输出num为最终结果
*/
public class test1 {
static char[][] sea;//用于记录用例
static int[][] aes;//用于记录不同的大陆,其值为不同大陆的标记
static int n;//输入的初值
static int num=0;//最后被淹没的大陆数量
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
sea = new char[n][n];
aes = new int[n][n];
//初始化sea
for(int i=0;i=0 && a+y[i]=0 && b+x[i]=0 && a+y[i]=0 && b+x[i]
登录查看全部
参与评论
手机查看
返回顶部