母亲的奶牛(bfs)

农夫约翰有三个容量分别为 A , B , C A,B,C A,B,C 升的挤奶桶。

最开始桶 A A A 和桶 B B B 都是空的,而桶 C C C 里装满了牛奶。

有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。

这一过程中间不能有任何停顿,并且不会有任何牛奶的浪费。

请你编写一个程序判断,当 A A A 桶是空的时候, C C C 桶中可能包含多少升牛奶,找出所有的可能情况。

输入格式

共一行,包含三个整数 A , B , C A,B,C A,B,C

输出格式

共一行,包含若干个整数,表示 C C C 桶中牛奶存量的所有可能情况,请将这些数字按升序排列。

数据范围

1 ≤ A , B , C ≤ 20 1≤A,B,C≤20 1A,B,C20

输入样例1:

8 9 10

输出样例1:

1 2 8 9 10

输入样例2:

2 5 10

输出样例2:

5 6 7 8 9 10

思路

以输入样例1模拟

在这里插入图片描述

可以发现,每个桶都可以倒入另外两个桶中

在这里插入图片描述

也就是说,在桶的数量为 3 3 3 的情况下,共有 3 × 2 = 6 3 \times 2 = 6 3×2=6 种可能。

因此可以枚举 6 种状态或者循环遍历所有所有状态。

这里我们可以用数组模拟队列,每当有新的状态时,就把新状态入队,通过遍历队列进行宽搜

代码

#include<iostream>
#include<algorithm>
using namespace std;const int N = 21;
int A, B, C; //桶的容量
struct node {int a, b, c;
} q[N * N * N];
bool st[N][N][N];//标记状态int bfs() {int hh = 0, tt = 0; //队头队尾q[0] = {0, 0, C};st[0][0][C] = true;int W[3] = {A, B, C}; //桶的容量while (hh <= tt) {auto t = q[hh++];for (int i = 0; i < 3; i++) //将i桶倒入j桶for (int j = 0; j < 3; j++)if (i != j) {int w[3] = {t.a, t.b, t.c};int r = min(w[i], W[j] - w[j]);w[i] -= r, w[j] += r;int a = w[0], b = w[1], c = w[2];if (!st[a][b][c]) {st[a][b][c] = true; //标记q[++tt] = {a, b, c}; }}}}int main() {cin >> A >> B >> C;bfs();for (int i = 0; i <= C; i++)for (int j = 0; j <= B; j++)if (st[0][j][i]) {cout << i << ' ';break;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令之搜索查找类

1.1find查找文件或目录 1&#xff09;基本语法 find [搜索范围] [ 选项] find -name&#xff1a;按照名字查找 find -user&#xff1a;按用户相关查找 find -size&#xff1a;按照文件大小查找 1.2locate快速定位文件路径 经验技巧&#xff1a;由于locate指令基于数据库进行…

HP Pavilion Laptop 15-eg2xxx原厂Win11系统预装oem系统包

惠普星15青春版笔记本原装出厂Windows11系统镜像下载&#xff0c;恢复出厂开箱状态 链接&#xff1a;https://pan.baidu.com/s/1f4hjwWX0CMDykb_8YXSf-w?pwd0aja 提取码&#xff1a;0aja 适用型号&#xff1a; 15-eg0010TU、15-eg0011TU、15-eg0008TX、15-eg0009TX 15-eg…

YOLOv8-pose自定义关键点推理封装

使用场景:自己定义的关键点比如说做了耳蜗检测有13个关键点(就是原来的pose点数了)可以单独修改每个关键点的颜色以及Label的颜色。 代码: import cv2 from ultralytics import YOLO import torch import numpy as npclass PoseDetector:def __init__(self, model_path):s…

金属表面缺陷检测设备通常采用计算机视觉技术和机器学习算法

金属表面缺陷检测是在金属制造过程中非常重要的质量控制步骤。它涉及检测金属表面可能存在的各种缺陷&#xff0c;如裂纹、气泡、凹坑、氧化、斑点等。这些缺陷可能会影响金属制品的性能和质量&#xff0c;因此需要及早发现并进行处理。 目前&#xff0c;金属表面缺陷检测通常采…

SQL-存储过程介绍

SQL存储过程是预先编译的SQL代码块&#xff0c;可以在数据库中存储和调用。存储过程可以接受输入参数&#xff0c;并返回结果&#xff0c;它们可以执行一系列的SQL语句、控制结构、变量定义等。下面是SQL存储过程的一些详解以及其优缺点&#xff1a; 一、详解 预编译&#xff…

从零开始写 Docker(六)---实现 mydocker run -v 支持数据卷挂载

本文为从零开始写 Docker 系列第六篇&#xff0c;实现类似 docker -v 的功能&#xff0c;通过挂载数据卷将容器中部分数据持久化到宿主机。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; …

PriorityQueue集合源码分析

PriorityQueue集合源码分析 文章目录 PriorityQueue集合源码分析前置知识一、字段分析二、构造函数分析三、方法分析四、总结 PriorityQueue 优先级队列&#xff0c;是基于堆的结构来构建的。而堆是基于完全二叉树来实现的&#xff0c;而二叉树除了可以用节点来实现也可以用数组…

elementary OS7 (Ubuntu 22.04)中word文档转化成pdf格式文档

elementary OS7 Ubuntu 22.04中word文档转化成pdf格式 背景目标操作 背景 收到一个word文档&#xff0c;让调整一下排版后转换一下格式&#xff0c;转换成pdf格式&#xff0c;这要是在windows系统下&#xff0c;office可以直接另存为pdf文档&#xff0c;在linux系统下没有offi…

基于Springboot的船运物流管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的船运物流管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

简单对已有云服务器进行linux环境搭建以及共享服务器

前言&#xff1a; 外壳程序&#xff1a;Xshell7 云服务器&#xff1a;华为云 服务器操作系统&#xff1a;centos7 1.云服务的设置&#xff08;这里购买的华为云&#xff0c;阿里腾讯都可以&#xff09; 区域尽量选择距离所处地距离自己最近的区域。镜像这里选择的为centos7.…

考研失败, 学点Java打小工_Day3_卫语句_循环

1 编码规范——卫语句 表达异常分支时&#xff0c;少用if-else方式。   比如成绩判断中对于非法输入的处理&#xff1a; /*>90 <100 优秀>80 <90 良好>70 <80 一般>60 <70 及格<60 不及格*/Testpu…

企业培训考试系统数字化解决方案优势有哪些?

企业员工内部培训考试系统&#xff0c;用数字技术和互联网平台&#xff0c;为企业提供高效、便捷、个性化的员工培训服务的解决方案。 企业员工培训考试数字化解决方案不仅能够提供更加高效、灵活和互动的学习体验&#xff0c;还能够帮助企业实现长期的人才发展战略&#xff0…

字符串篇(二)

文章目录 1.10 format()函数1.11 f-string 格式化字符串1.12 index()函数1.13 isalnum()函数1.14 isalpha()函数1.15 isdecimal()函数1.16 isdigit()函数1.17 isidentifier()函数 1.10 format()函数 在 Python 中&#xff0c;format 是一个内建方法&#xff0c;用于格式化字符…

Windows 基本操作快捷键

Windows 基本操作快捷键 1. Windows 7 专业版2. Keyboard shortcuts in WindowsReferences 1. Windows 7 专业版 2. Keyboard shortcuts in Windows Win 键是键盘上图标像窗户键。 快速切换窗口 Alt Tab 快速移到网页末 Ctrl End 快速移到网页首 Ctrl Home 锁屏 Wi…

蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形,电脑连接后总是容易断开蓝牙

蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形&#xff0c;电脑连接后总是容易断开蓝牙 问题描述问题排查可能6可能7电脑蓝牙驱动问题 结语&#xff1a; 问题描述 蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形&#xff0c;电脑连接后总是容易断开蓝牙。 关键之前我…

[M单调栈] lc1793. 好子数组的最大分数(单调栈+双指针+思维转换)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;1793. 好子数组的最大分数 相关题目&#xff1a; [单调栈] lc84. 柱状图中最大的矩形、aw131. 直方图中最大的矩形(单调栈算法对比模板题) 2. 题目解析 一道需要转换思维的题目&#xff0c;需要将其转换为&a…

学习大数据,所需要的SQL基础(3)

文章目录 mysql函数字符串函数字符串函数列表概览用户环境准备字符串连接函数字符串大小写处理函数移除空格函数子串函数 数值函数数值函数列表常用数值函数练习 日期函数日期函数列表常用日期函数的练习 sql练习查询练习 mysql函数 MySQL中的函数都是针对指定的列进行操作的 …

【代码分享】二十三种测试函数(关注可免费获取)

智能优化算法测试函数简介 智能优化算法测试函数是为了在优化算法研究和开发中测试算法性能的规范问题集合。这些测试函数模拟了真实世界优化问题的不同方面,包括局部最小值、最大值、全局最优解,以及多种复杂性如高维度、非线性、不连续等。优化算法,如遗传算法、粒子群优…

大数据面试题 —— Kafka

目录 消息队列 / Kafka 的好处消息队列的两种模式什么是 KafkaKafka 优缺点你在哪些场景下会选择 Kafka讲下 Kafka 的整体结构Kafka 工作原理 / 流程Kafka为什么那么快/高效读写的原因 / 实现高吞吐的原理生产者如何提高吞吐量&#xff08;调优&#xff09;kafka 消息数据积压&…

什么是组态软件?Web组态软件又是什么?

从事相关工作的对“组态软件”应该都不陌生&#xff0c;那Web组态软件又是什么呢?本文将对Web组态可视化软件&#xff08;下称“Web组态软件”&#xff09;做简单介绍&#xff0c;可视化编辑器是Web组态软件中的一个重要功能模块。除了编辑器&#xff0c;还有哪些功能模块?又…