贴一发自己写的手写队列…..

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <queue>
#include <set>
#include <stack>
#include <algorithm>
using namespace std;
#define PI acos(-1.0)
#define INF 0x7fffffff
#define N 1010
struct asd
{int a,b;int flag;int step;
} q[N];
int pre[N];
int vis[N][N];
int head,rail;
void pri()
{printf("impossible\n");
}
void print(int x)
{int t;t=pre[x];if(t==0){if(q[x].flag==0){printf("FILL(1)\n");}else if(q[x].flag==1){printf("FILL(2)\n");}else if(q[x].flag==2){printf("DROP(1)\n");}else if(q[x].flag==3){printf("DROP(2)\n");}else if(q[x].flag==4){printf("POUR(2,1)\n");}else if(q[x].flag==5){printf("POUR(1,2)\n");}return;}else{print(t);}if(q[x].flag==0){printf("FILL(1)\n");}else if(q[x].flag==1){printf("FILL(2)\n");}else if(q[x].flag==2){printf("DROP(1)\n");}else if(q[x].flag==3){printf("DROP(2)\n");}else if(q[x].flag==4){printf("POUR(2,1)\n");}else if(q[x].flag==5){printf("POUR(1,2)\n");}
}void bfs(int n,int m,int c)
{memset(vis,0,sizeof(vis));head=0;rail=1;q[0].a=0;q[0].b=0;q[0].flag=-1;q[0].step=0;vis[0][0]=1;pre[0]=-1;while(head<rail){//printf("%d\n",head);int x=q[head].a;int y=q[head].b;if(x==c||y==c){printf("%d\n",q[head].step);print(head);return;}for(int i=0; i<6; i++){if(i==0){q[rail].a=n;q[rail].b=q[head].b;q[rail].flag=0;}else if(i==1){q[rail].a=q[head].a;q[rail].b=m;q[rail].flag=1;}else if(i==2){q[rail].a=0;q[rail].b=q[head].b;q[rail].flag=2;}else if(i==3){q[rail].a=q[head].a;q[rail].b=0;q[rail].flag=3;}else if(i==4){// printf("aaa\n");if((q[head].b+q[head].a)>=n){q[rail].a=n;q[rail].b=q[head].b-(n-q[head].a);q[rail].flag=4;}else if((q[head].b+q[head].a)<n){q[rail].a=q[head].a+q[head].b;q[rail].b=0;q[rail].flag=4;}// printf("%d %d\n",q[rail].a,q[rail].b);}else if(i==5){if((q[head].a+q[head].b)>=m){q[rail].a=q[head].a-(m-q[head].b);q[rail].b=m;q[rail].flag=5;}else if((q[head].a+q[head].b)<m){q[rail].a=0;q[rail].b=q[head].b+q[head].a;q[rail].flag=5;}}//printf("%d %d\n",q[rail].a,q[rail].b);if(vis[q[rail].a][q[rail].b])continue;vis[q[rail].a][q[rail].b]=1;q[rail].step=q[head].step+1;pre[rail]=head;rail++;if(q[rail].b==c||q[rail].a==c){//printf("aaa\n");printf("%d\n",q[head].step+1);print(rail);return;}}head++;}pri();return;
}
int main()
{int n,m,c;while(~scanf("%d%d%d",&n,&m,&c)){// printf("%d %d %d\n",n,m,c);bfs(n,m,c);}return 0;
}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/5934586.html

POJ3414(BFS+[手写队列])相关推荐

  1. 面试官系统精讲Java源码及大厂真题 - 26 惊叹面试官:由浅入深手写队列

    26 惊叹面试官:由浅入深手写队列 人生的价值,并不是用时间,而是用深度去衡量的. 引导语 现在不少大厂面试的时候会要求手写代码,我曾经看过一个大厂面试时,要求在线写代码,题目就是:在不使用 Java ...

  2. 面试官让我手写队列,差点没写出来,回来后赶忙把重点记下来

    微信搜一搜[bigsai]更多精彩 点赞的帅哥美女祝你们越学越猛 目录 前言 队列介绍 普通队列 循环队列(数组实现) 循环队列(链表实现) 双向队列(加餐) 总结 前言 栈和队列是一对好兄弟,前面我 ...

  3. 队列的基本操作_如果让你手写个栈和队列,你还会写吗?||CSDN博客精选

    来源:华为云云享专家倪升武 昨天跟一个CSDN上的朋友聊天,他说现在如果让他自己手写一个栈或者队列,估计都要写蛮久的,平时虽然都在用,但是都是别人封装好的集合. 确实,经典的数据结构,包括排序算法,虽 ...

  4. 如果让你手写个栈和队列,你还会写吗?

    昨天跟一个CSDN上的朋友聊天,他说现在如果让他自己手写一个栈或者队列,估计都要写蛮久的,平时虽然都在用,但是都是别人封装好的集合. 确实,经典的数据结构,包括排序算法,虽然我们平时不用手写了,但是这 ...

  5. 【重难点】【JUC 03】怎么实现一个线程安全的队列、手写模拟实现一个阻塞队列

    [重难点][JUC 03]怎么实现一个线程安全的队列.手写模拟实现一个阻塞队列 文章目录 [重难点][JUC 03]怎么实现一个线程安全的队列.手写模拟实现一个阻塞队列 一.怎么实现一个线程安全的队列 ...

  6. 最小的K个数(手写大顶堆和用优先级队列比较)

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目链接:https://www.nowcoder.com/prac ...

  7. 应对笔试手写代码,如何准备深度优先算法 广度优先算法?

    应对笔试手写代码,如何准备深度优先算法 & 广度优先算法? 1. 什么是深度优先算法?什么又是广度优先算法? 2. 广度优先算法使用场景 3. 广度优先算法模板 4. 深度优先算法使用场景 5 ...

  8. 恶补C++:重载手写堆结构体lower_bound()vector构造、析构函数setmappairstack

    部分目录 运算符重载 C++ 函数调用运算符 () 重载 我的经历 关于this 关于友元 附:重载函数 C++补充 优先队列 手写堆 手写堆的存储 手写堆的两个基本操作 插入节点的原理 求当前堆的最 ...

  9. android 手写字体识别,一种基于Android系统的手写数学公式识别及生成MathML的方法...

    专利名称:一种基于Android系统的手写数学公式识别及生成MathML的方法 技术领域: 本发明属于模式识别技术领域,涉及数学公式中字符间的空间结构分析,具体涉及一种基于Android系统的手写数学 ...

  10. 手写 30 个主流机器学习算法,代码超 3 万行,全都开源了!

    点击上方"视学算法",选择"星标"公众号 第一时间获取价值内容 本文经机器之心(ID:almosthuman2014)授权转载,禁二次转载 参与:思源.一鸣.张 ...

最新文章

  1. 【CVPR2020来啦】不容错过的29个教程Tutorial !(附Slides下载链接)
  2. 【直播回顾】云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第19讲):Java Spring Cloud微服务架构模式与开发实战...
  3. 网络协议:TCP/IP、SOCKET、HTTP
  4. 计算机控制系统笔记,笔记型计算机的电源控制系统
  5. linux 文件系统 dfs,分布式文件系统fastDFS 机器硬件要求
  6. pythondjango项目集成_Django集成celery实战小项目
  7. hdu Train Problem I 栈的基本应用
  8. 超融合架构与传统IT架构的区别
  9. 两个很棒的爬虫智能解析库,通配大部分网页!
  10. Setup Factory安装结束自动启动程序
  11. 利用Bitvise SSH Client设置二级代理
  12. VeryCD将于本月关闭 P2P历史即将终结
  13. (Excel)如何使用Excel进行四舍六入数据修约
  14. 03_美国医疗保健行业的数据介绍
  15. Android圆盘刻度,类似体重测试仪,效果不错哦
  16. Linux系统安装教程(详细版)
  17. 定积分之几种常见曲线
  18. Python3——斐波那契数列
  19. 《软件工程》实验个人报告,实验三:软件系统设计1;滁州学院课程
  20. 解析SWD协议,烧写程序

热门文章

  1. CSS动画实现滚动播放
  2. android - Unable to add window -- token null is not for an application的解决方案
  3. PAT 1031 查验身份证
  4. 【BZOJ 1047】[HAOI2007]理想的正方形
  5. Cookie与Session简介
  6. mysql怎么让id重新开始自增
  7. git rev-parse 和 git cat-file
  8. TVS ESD 二极管介绍与应用
  9. Hdu 1026 Ignatius and the Princess I
  10. 【原创】Proton在Android上的编译