NYOJ(21),BFS,三个水杯
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=21
BFS判环,vis标记状态即可。
#include <stdio.h> #include <queue> #include <string.h>using namespace std;bool vis[100][100][100];struct Cup {int v[3];int step; };int s[3],t[3];int bfs() {memset(vis,false,sizeof(vis));Cup start;start.step = 0;start.v[0] = s[0];start.v[1] = 0;start.v[2] = 0;vis[s[0]][0][0] = true;queue<Cup> Q;Q.push(start);while(!Q.empty()){start = Q.front();Q.pop();if(start.v[0]==t[0]&&start.v[1]==t[1]&&start.v[2]==t[2])return start.step;for(int i=0; i<3; i++){for(int j=0; j<3; j++){Cup tmp = start;if(i==j||tmp.v[i]==0||tmp.v[j]==s[j])continue;if(tmp.v[i]+tmp.v[j]<=s[j]){tmp.v[j] = tmp.v[i]+tmp.v[j];tmp.v[i] = 0;}else{tmp.v[i] = tmp.v[i] - (s[j]-tmp.v[j]);tmp.v[j] = s[j];}tmp.step++;if(!vis[tmp.v[0]][tmp.v[1]][tmp.v[2]]){Q.push(tmp);vis[tmp.v[0]][tmp.v[1]][tmp.v[2]] = true;}}}}return -1; }int main() {int cases;scanf("%d",&cases);while(cases--){for(int i=0; i<3; i++)scanf("%d",&s[i]);for(int i=0; i<3; i++)scanf("%d",&t[i]);printf("%d\n",bfs());}return 0; }
转载于:https://www.cnblogs.com/TreeDream/p/5742186.html
NYOJ(21),BFS,三个水杯相关推荐
- nyoj 21 三个水杯 BFS
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识 ...
- [ACM_NYOJ_21]三个水杯(BFS广度优先搜索)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识,只 ...
- NYoj21 三个水杯
三个水杯 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没 ...
- nyoj21 三个水杯
nyoj21 三个水杯 时空限制 1000ms/128MB 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识,只能根据 ...
- 《分布式操作系统》知识点(15~21)三
注: (4)8 P160:(4)代表该道题属于第4章的内容,8是题号(第8题),P160是该习题在书中的大体页码. (3)15说明基于时间戳的乐观并发控制算法的基本原理,并举例说明.P110 答:所谓 ...
- 美通社企业新闻汇总 | 2019.2.21 | 中国三家IC设计企业营收规模超10亿美元;百威为中国引入北海道百年传奇啤酒...
要闻 猝死理赔年轻化,恶性肿瘤仍为头号健康"杀手" <福布斯旅游指南>公布2019年度酒店星级评级名单 2018年中国三家IC设计企业营收规模超10亿美元 西门子医疗在 ...
- NYOJ 题目68 三点顺序
三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针 ...
- 算法设计大赛21题---三升序列(DFS)
算法设计大赛21. 矩阵为: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASA ...
- NYOJ 整数划分(三) (划分数大集合)
题意:虽然是中文题意但是还是想上一下题 题目描述 整数划分是一个经典的问题.请写一个程序,完成以下要求. 输入 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k ...
最新文章
- 自定义类型数组的初始化
- 如何提高强化学习效果?内在奖励和辅助任务
- Python 之 matplotlib (五)Annotation注解
- python opencv转换bytesio
- java线程主要状态及转换_Java线程状态转换及控制
- 4、java中的流程控制(程序结构)
- 阿里巴巴Linux开源镜像站 华为Linux开源镜像站 Linux宝塔面板
- python+selenium之自动生成excle,保存到指定的目录下
- WSE2.0中X509安全令牌的使用
- Linux auditd rules generate 通用linux审计规则生成工具DevOps CI/CD持续集成交付 tools
- 《海量数据库解决方案》读后感
- python数据分析与发展常用哪些软件_常用数据分析软件比较
- 流程和企业成熟度模型(PEMM)
- osgEarth gpx文件 16.feature_gpx.earth
- WPS简历模板的图标怎么修改_指导|让疫情之下的应届生,求职简历脱颖而出
- Android武林大会(转)
- Mysql 免安装版本
- 如何使用CSS绘制奥运五环标志
- android qq apk,仿QQ获取手机中的APK并分享的实现
- 解决在MATLAB Simulink Library Browser找不到Car Sim S-Function的问题