codevs 1226 倒水问题
1226 倒水问题
有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水。设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水也可以相互倾倒。已知 x 升壶为空 壶, y 升壶为空壶。问如何通过倒水或灌水操作, 用最少步数能在x或y升的壶中量出 z ( z ≤ 100 )升的水 来。
一行,三个数据,分别表示 x,y 和 z;
一行,输出最小步数 ,如果无法达到目标,则输出"impossible"
3 22 1
14
枚举八种可能情况进行bfs
注意要判重
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
int n;int m,z; struct miku{
int x;int y,step;
}cur,nxt; queue<miku>que; bool can(int x,int y)
{
if(x>=&&y>=&&x<=n&&y<=m)
return ;
return ;
} int ans;
bool vis[][];
void bfs(int x,int y)
{
cur.x=x;cur.y=y;cur.step=;
que.push(cur);
while(!que.empty())
{
cur=que.front();
que.pop();
for(int i=;i<=;i++)
{
int next_x,next_y;
if(i==)next_x=,next_y=cur.y+cur.x;//x->y倒空
else if(i==)next_x=cur.x+cur.y,next_y=;//y->x倒空
else if(i==)next_x=n,next_y=cur.y;//倒满x
else if(i==)next_x=cur.x,next_y=m;//倒满y
else if(i==)next_x=,next_y=cur.y;//清空x
else if(i==)next_x=cur.x,next_y=;//清空y
else if(i==)next_x=n,next_y=cur.y-(n-cur.x);//y->x不倒空
else if(i==)next_x=cur.x-(m-cur.y),next_y=m;//x->y不倒空
if(can(next_x,next_y))
if(next_x==z||next_y==z)
{
ans=cur.step+;
return ;
}
if(can(next_x,next_y)&&!vis[next_x][next_y])
{
vis[next_x][next_y]=;
nxt.x=next_x;
nxt.y=next_y;
nxt.step=cur.step+;
que.push(nxt);
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&z);
bfs(,);
if(ans!=)
printf("%d",ans);
else printf("impossible");
return ;
}
codevs 1226 倒水问题的更多相关文章
- CodeVS 1226 倒水问题【DFS/BFS】
题目描述 Description 有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水.设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水 ...
- 洛谷P1432 倒水问题(CODEVS.1226)
To 洛谷.1432 倒水问题 题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were co ...
- 广度优先搜索 cdoevs 1226 倒水问题
cdoevs 1226 倒水问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有两个无刻度标志的水壶,分别可装 x 升 ...
- 倒水问题 (codevs 1226) 题解
[问题描述] 有两个无刻度标志的水壶,分别可装x升和y升 ( x,y 为整数且均不大于100)的水.设另有一水缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水也可以相互倾倒.已知x升壶为空壶, ...
- [Wikioi 1226]倒水问题
题目描写叙述 Description 有两个无刻度标志的水壶.分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水. 设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶 ...
- 【CODEVS】倒水问题
题目描述: 有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水.设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水也可以相互倾倒.已知 ...
- Codevs 1497 取余运算== 洛谷P 1226
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 输入b,p,k的值,编程计算bp mod k的值.其中的b,p,k*k ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
随机推荐
- js 给指定ID赋值
js 给指定ID赋值 <script language="javascript" type="text/javascript"> document. ...
- 【洛谷 P1501】 [国家集训队]Tree II(LCT)
题目链接 Tree Ⅱ\(=\)[模板]LCT+[模板]线段树2.. 分别维护3个标记,乘的时候要把加法标记也乘上. 还有就是模数的平方刚好爆\(int\),所以开昂赛德\(int\)就可以了. 我把 ...
- HDU 1045 Fire Net (深搜)
题目链接 Problem DescriptionSuppose that we have a square city with straight streets. A map of a city is ...
- scrapy爬虫框架介绍
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- 二. Jmeter--关联
1. 首先建立一个线程组(Thread Group),为什么所有的请求都要加入线程组这个组件呢?不加不行吗?答案当然是不行的.因为jmeter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建 ...
- 4B/5B编码原理
4B/5B编码原理 什么是4B/5B编码? 4B/5B编码是百兆以太网(即快速以太网)中线路层编码类型之一,就是用5bit的二进制数来表示4bit二进制数,映射方式如下表所示: 为什么要进行4B/5B ...
- 64_t2
texlive-biblatex-chem-doc-svn42065-33.fc26.2.no..> 24-May-2017 15:44 1044190 texlive-biblatex-che ...
- RAID总结
RAID-0: 这种模式若使用相同型号容量的磁盘来组成效果最佳.这种模式RAID会先将磁盘切出等量的区块chunk,当文件要存入RAID时先按照chunk的大小切割好,再依次存放到各个磁盘中去,由于磁 ...
- python之smtplib库学习
# -*- coding:utf-8 -*- import smtplibfrom email.mime.text import MIMETextfrom email import encodersf ...
- linux系统磁盘挂载
1.查看系统磁盘挂载情况 fdisk -l 2.格式化磁盘 mkfs -t ext3 /dev/sdb 3.挂在磁盘 mount /dev/sdb /disk2 4.查看磁盘挂载情况 df -h 5. ...