人生中第一个AC的广搜题目,喵呜,C++的STL果真不错,

#include<stdio.h>
#include<queue>
#include<string.h>
#include<windows.h>
using namespace std;
bool visited[100][100][100];
int a, b, c;
struct Node{
int a;
int b;
int c;
int s;
};
Node water;
Node cup;
Node fish;
Node dream;
Node gb(Node key, int n){
switch(n){
case 0:
key.b+=key.a;
if(key.b>water.b){
key.a=key.b-water.b;
key.b=water.b;
}
else{
key.a = 0;
}
break;
case 1:
key.c+=key.a;
if(key.c>water.c){
key.a=key.c-water.c;
key.c=water.c;
}
else{
key.a = 0;
}
break;
case 2:
key.c+=key.b;
if(key.c>water.c){
key.b=key.c-water.c;
key.c=water.c;
}
else{
key.b = 0;
}
break;
case 3:
key.a+=key.c;
if(key.a>water.a){
key.c=key.a-water.a;
key.a=water.a;
}
else {
key.c = 0;
}
break;
case 4:
key.a+=key.b;
if(key.a>water.a){
key.b=key.a-water.a;
key.a=water.a;
}
else{
key.b = 0;
}
break;
case 5:
key.b+=key.c;
if(key.b>water.b){
key.c=key.b-water.b;
key.b=water.b;
}
else{
key.c = 0;
}
break;
}
return key;
}
int main(){
int i, sum, n;
scanf("%d",&n);
while(n--){ queue<Node>num; scanf("%d%d%d",&water.a,&water.b,&water.c);
scanf("%d%d%d",&fish.a,&fish.b,&fish.c);
memset(visited, false, sizeof(visited));
cup.a = water.a;
cup.b=0;
cup.c=0;
cup.s=0;
visited[cup.a][0][0] = true;
num.push(cup);
while(!num.empty()){
cup=num.front();
if((cup.a==fish.a)&&(cup.b==fish.b)) break;
for(i=0;i<6;i++){
dream=gb(cup,i);
dream.s++;
if(visited[dream.a][dream.b][dream.c] == false){
num.push(dream);
visited[dream.a][dream.b][dream.c] = true;
}
}
num.pop();
}
if(num.empty()){
printf("-1\n");
}else{
printf("%d\n",cup.s);
}
}
return 0;
}

若是对广搜的概念还是不懂的话,有道最好的入门题目,http://poj.org/problem?id=3278

大家加油

版权声明:本文为博主原创文章,未经博主允许不得转载。

NYOJ-21 三个水杯 AC 分类: NYOJ 2014-02-08 11:35 174人阅读 评论(0) 收藏的更多相关文章

  1. C#多线程(上) 分类: C# 线程 2015-03-09 10:35 174人阅读 评论(0) 收藏

    一.多线程的相关概念 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又是由多个线程所组成的. 什么是线程? 线程是程序中的一个执行 ...

  2. 8大排序算法图文讲解 分类: Brush Mode 2014-08-18 11:49 78人阅读 评论(0) 收藏

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  3. C语言之void类型及void指针 分类: C/C++ 2015-07-13 11:24 8人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/pengyingh/articles/2407267.html 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在 ...

  4. iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏

    一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAc ...

  5. iOS开发网络数据之AFNetworking使用 分类: ios技术 2015-04-03 16:35 105人阅读 评论(0) 收藏

    http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...

  6. IOS即时通讯XMPP搭建openfire服务器 分类: ios技术 2015-03-07 11:30 53人阅读 评论(0) 收藏

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  7. 百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET 2015-01-12 11:18 346人阅读 评论(0) 收藏

    在百度编辑器示例代码基础上进行了修改,封装成类库,只需简单配置即可使用. 完整demo下载 版权声明:本文为博主原创文章,未经博主允许不得转载.

  8. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏

    一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...

  9. IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法 分类: 数据安全 2014-06-28 11:35 2805人阅读 评论(0) 收藏

    问题描述: 原因分析: 服务器开启了Https时,cookie的Secure属性应设为true:   解决办法: 1.服务器配置Https SSL方式,参考:https://support.micro ...

随机推荐

  1. luigi学习3-使用luigid

    --local-scheduler的方式只适用于开发调试阶段,当你真正要把程序部署到一个产品时,我们推荐使用luigid服务. 使用luigid服务不但能提供锁服务(防止一个任务被多个进程重复执行), ...

  2. apache和IIS共享80端口问题

    使用apache代理功能和IIS共享80端口的解决办法. 第一步:把iis所发布的网站默认端口由80改为8080: 第二步:修改apache的httpd.conf配置文件.  首先,要让apache支 ...

  3. Thinkphp 下面执行crond

    thinkphp开启cli支持  1.tp正好支持cli命令模式,手册的路径为13.7.4 如果是用的其他框架不支持cli,那么只能直接写程序了,其实就是写面向过程的最基础的php代码. 2.在入口文 ...

  4. 在EF的code frist下写稳健的权限管理系统:界面设计(四)

    基本都是采用pure设计(中文官网:http://purecss.org,英文官网:http://purecss.io).pure只是一个简单强大的cssUI库,支持响应式设计,适合自己设计或者给美工 ...

  5. Python核心编程--学习笔记--4--Python对象

    现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...

  6. instanceof、==号、Objetc类

    1)instanceof: 判断某个对象是否为某个类的实例,注意多态的运用,一个父类引用指向子类的对象,根据继承,子类就是父类,所以子类也可以看做是父类的一个实例.  形式:引用 instanceof ...

  7. SQL 集合(笔记)

    ——SQL是关于集合的 oracle是关系型数据,其中的数据表都是有一定规律的数据的一个个集合,所以在使用SQL时,如果能按照集合的思路来进行时会节省很多效率,也鞥让语句更加的清晰明了. 1.四个集合 ...

  8. 一篇文章教你读懂Makefile

    makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professiona ...

  9. ASP.NET2.0中对TextBox的Enable和ReadOnly属性的限制

    在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程 ...

  10. http://www.linuxso.com/linuxpeixun/10332.html

    http://blog.chinaunix.net/uid-134240-id-62371.html http://blog.chinaunix.net/uid-26495963-id-3279216 ...