首页 > 其他分享 >十一 2060. 奶牛选美 (DFS)

十一 2060. 奶牛选美 (DFS)

时间:2024-03-26 11:23:12浏览次数:27  
标签:int ++ DFS sc points static 选美 2060 new

十一 2060. 奶牛选美 (DFS)
image

思路:使用dfs找出两个相邻的斑点,搜索过的点改为'.'防止重复统计,然后依次遍历两个斑点内的点,找出最小曼哈顿距离。

import java.util.*;

public class Main {
    static int n, m;
    static char[][] g;
    static List<int[]>[] points = new ArrayList[2];
    static int[] dx = {-1, 0, 1, 0};
    static int[] dy = {0, 1, 0, -1};
    
    private static void dfs(int a, int b, List<int[]> q) {
        q.add(new int[]{a, b});
        g[a][b] = '.';
        for (int i = 0; i < 4; i++) {
            int x = a + dx[i], y = b + dy[i];
            if (x >= 0 && x < n && y >= 0 && y < m && g[x][y] == 'X') {
                dfs(x, y, q);
            }
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        g = new char[n][m];
        sc.nextLine();
        for (int i = 0; i < n; i++) {
            String line = sc.nextLine();
            g[i] = line.toCharArray();
        }
        
        int k = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (g[i][j] == 'X') {
                    points[k] = new ArrayList<>();  
                    dfs(i, j, points[k++]);
                }
            }
        }
        
        int res = 110;
        for (int[] a : points[0]) {
            for (int[] b : points[1]) {
                res = Math.min(res, Math.abs(a[0] - b[0]) + Math.abs(a[1] - b[1]));
            }
        }
        System.out.println(res - 1);
    }
}

标签:int,++,DFS,sc,points,static,选美,2060,new
From: https://www.cnblogs.com/he0707/p/18095657/lanqiaobei11

相关文章

  • Hadoop:HDFS配置与基本命令
    接上篇Hadoop的单机布署,接下来准备以单机的形式体验一把HDFS。 写在前而,我本机hadoop的根目录是/hadoop/hadoop-2.10.2,请各位读者根据实际情况辨别各自的路径。第一步,修改配置文件/hadoop/hadoop-2.10.2/etc/hadoop/core-site.xml<configuration><property>......
  • C++ | 剪枝(DFS)lanqiao OJ 2942
     上一篇我们已经分享了DFS的学习,剪枝相当于对部分DFS进行优化正常用DFS写,会遍历每一种情况,因此要判断他的合法性,并且在第十个检测点会超时,用剪枝后,这道题就可以过啦。//不剪枝的方法#include<bits/stdc++.h>usingnamespacestd;constintN=15;inta[N],n;v......
  • 登山小分队(dfs,模拟)
    原题链接:题目描述Foxity和他的好友们相约去爬山,但是他们每个人都来到了不同的山脚下。整个山的结构类似一棵"树",有很多的观光节点通过一条条山道连接起来。在图论中,树是一种无向图,其中任意两个顶点之间存在唯一一条路径。或者说,只要没有回路的连通图就是树。这个问题中,我们......
  • Adobe的PDF编辑软件Acrobat Pro DC 2024.001.20604版本下载与安装教程
    目录前言一、AcrobatProDC2024安装二、使用配置总结前言PDF格式(缩写为便携式文档格式和便携式文档格式)的发展始于1990年。这种格式用于以类似于打印文档的固定格式呈现包含文本、图像和其他要求的文档。Adobe在1993年发布了专有的Acrobat软件,首次展示了对这种......
  • DFS求解连通块问题
    DFS求解连通块问题#include<bits/stdc++.h>usingnamespacestd;charg[35][65];intvis[35][65],num,res;intdx[]={0,1,0,-1},dy[]={1,0,-1,0};voiddfs(intx,inty){if(x<1||x>30||y<1||y>60||g[x][y]=='0'||vis[x][y])return;vis[x][......
  • 1.基于搜索的路径规划:BFS、DFS、Dijkstra、A*、JPS
    1.概览可以对比不同算法的小动画 PathFinding.js(qiao.github.io)工作空间规划机器人有不同的形状和大小碰撞检测需要了解机器人的几何形状,耗时且难度大 我们希望将机器人表示为点,只需要把工作空间转换为配置空间C-obstacle,将原始的空间膨胀,这是一次性的C-space......
  • 九宫幻方(DFS实现)c++
    题目描述题目分析要完成这个问题,我们需要做这几步1.用1~9的数字替换掉输入中的0,且幻方中不能出现重复元素2.替换完成后,要判断是否为幻方判断是否为幻方boolcheck()//检查是否为幻方{ intsum=a[1][1]+a[2][2]+a[3][3];//左对角线的和 if(sum!=a[1][3]+a[2][2]+a[......
  • DFS基础——迷宫
    迷宫关于dfs和bfs的区别讲解。对于上图,假设我们要找从1到5的最短路,那么我们用dfs去找,并且按照编号从大到小的顺序去找,首先找到的路径如下,从节点1出发,我们发现节点2可以走,于是我们就走向了节点2,然后又发现节点2可以走向节点4,于是走向了节点4,然后从节点4走向了节点5,......
  • DFS进阶——全排列
    通过后续的题目希望大家明白,dfs不仅仅是对图的遍历,他还有很多用法。DFS进阶1——回溯先说一下回溯的板子dfs(){for(......){标记信息dfs()撤销标记}}回溯模板——递归实现排列型枚举题目分析其实就是对1~n的数字全排列,这里就可以用dfs去做,1~n全排......
  • HDFSRPC安全认证Token篇推广
    本文主要阐述HDFSRPC安全认证相关的实现。主要介绍Token相关的实现。写在前面相关bloghttps://blog.csdn.net/hncscwc/article/details/124722784https://blog.csdn.net/hncscwc/article/details/124958357Token由来在探究完Kerberos,我一直在想一个问题,rpcConnection已经完......