首页 > 其他分享 >十三 1355. 母亲的牛奶 (BFS)

十三 1355. 母亲的牛奶 (BFS)

时间:2024-03-26 15:13:40浏览次数:25  
标签:queue used 牛奶 int 1355 BFS static private new

1355. 母亲的牛奶 (BFS)
image

思路:使用BFS搜索所有可能出现的情况,同时保存到used数组,防止重复搜索,最后遍历used数组,因为只求C桶中牛奶,所有先遍历C桶,出现A桶为空立即打印结果并break。

import java.util.*;

public class Main {
    private static int A, B, C;
    private static int[] T;
    private static boolean[][][] used;
    
    private static void bfs() {
        used = new boolean[A + 1][B + 1][C + 1];
        used[0][0][C] = true;
        Queue<int[]> queue = new LinkedList<>();
        queue.offer(new int[]{0, 0, C});
        while (!queue.isEmpty()) {
            int[] temp = queue.poll();
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    if (i != j) {
                        int[] t = new int[]{temp[0], temp[1], temp[2]};
                        int n = Math.min(t[i], T[j] - t[j]);
                        t[i] -= n;
                        t[j] += n;
                        if (!used[t[0]][t[1]][t[2]]) {
                            used[t[0]][t[1]][t[2]] = true;
                            queue.offer(t);
                        }
                    }
                }
            }
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        A = sc.nextInt();
        B = sc.nextInt();
        C = sc.nextInt();
        T = new int[]{A, B, C};
        bfs();
        for (int c = 0; c <= C; c++) {
            for (int b = 0; b <= B; b++) {
                if (used[0][b][c]) {
                    System.out.print(c + " ");
                    break;
                }
            }
        }
    }
}

标签:queue,used,牛奶,int,1355,BFS,static,private,new
From: https://www.cnblogs.com/he0707/p/18096679/lanqiaobei13

相关文章

  • 九 1343. 挤牛奶 (区间合并)
    1343.挤牛奶(区间合并)思路:将挤奶时间段按开始时间重新排序,然后合并区间右侧和下一区间左侧重合的区间,当不重合时,计算最长连续挤奶时间以及最长连续无人挤奶时间。importjava.util.*;importjava.util.stream.IntStream;publicclassMain{publicstaticvoidma......
  • 蓝桥杯算法集训 - Week 4:BFS、并查集、Flood Fill、哈希、单调栈/队列
    蓝桥杯算法集训-Week4本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、BFSBFS算法复习参考:BFS(Java)广度优先搜索简单介绍、模板、案例(一)Ⅰ、代码模板staticvoidbfs(Troot){//双端队列,用来存储元素D......
  • 浅析BFS
    广度优先搜索(BFS)广度优先算法(BFS)又称宽度优先搜索,是指依次将与根节点路径长度(默认每条边长度相同)相同的点遍历,再遍历路径长度加一的点,直到遍历完整个图结束。BFS在树中的应用作用:BFS用于在树中搜索某个特定的数据。方法:从根节点开始搜索,按层遍历整个树。一般使用队......
  • 【BFS】(代码详解)
    全面学习BFS的可以参照以下路径,本文章只附上部分代码的解释作为学习记录共勉(星星眼)原文链接:https://blog.csdn.net/m0_62881629/article/details/125072287给定一个n×mn×m的二维整数数组,用来表示一个迷宫,数组中只包含00或11,其中00表示可以走的路,11表示不可通过......
  • 1.基于搜索的路径规划:BFS、DFS、Dijkstra、A*、JPS
    1.概览可以对比不同算法的小动画 PathFinding.js(qiao.github.io)工作空间规划机器人有不同的形状和大小碰撞检测需要了解机器人的几何形状,耗时且难度大 我们希望将机器人表示为点,只需要把工作空间转换为配置空间C-obstacle,将原始的空间膨胀,这是一次性的C-space......
  • 基于JavaWeb的鲜牛奶订购系统—开题报告
    一、研究解决的问题本系统使用Java作为开发语言,基于JavaWebB/S架构进行设计,前端技术HTML+CSS+Vue,后端技术SpringBoot,数据库采用MySql,并在win10操作平台完成开发。系统用户角色分为订奶用户,供奶商家和管理员三个部分。其中,订奶用户可以浏览住址所在区的订奶信息,登录后拥有管理......
  • 【力扣】岛屿数量(体会一下dfs和bfs思路的实质)
    题目描述注意,需要求的是岛屿的数量,而不是岛屿的总面积,这道题很考验对dfs思路的理解,而不是简单地套用模版。可以用dfs和bfs两种方法做。深度优先搜索版本首先看代码:classSolution{private:intdir[4][2]={0,1,1,0,-1,0,0,-1};//四个方向voiddfs(ve......
  • P1355 神秘大三角
    原题链接题解叉积的运用,scanf控制输入格式code#include<bits/stdc++.h>usingnamespacestd;structnode{intx,y;}a[100005];intx[200005],y[200005];intmain(){for(inti=0;i<3;i++){scanf("(%d,%d)\n",&a[i].x,&a[i].y);......
  • 《牛客》-E魔法之森的蘑菇(经典BFS变种)
    思路:由于某些固定方向的情况,我们将到达该点的粒度划分成从那个方向的到达该点,及基础bfs为每个点可以到达一次,变成没个点可以到达四次(四个方向)用一个三维数组进行标记vis[N][N][4],其余细节看下方ACcodeACcode:#include<bits/stdc++.h>usingnamespacestd;#defineendl......
  • BFS记忆化搜索---标记
    迷宫(洛谷)题目描述给定一个\(N\timesM\)方格的迷宫,迷宫里有\(T\)处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。输入格式第......