OPJ2.5基本算法之搜索2152:Pots

题目传送门
卡了好久的搜索题呀!今天看了别人的题解终于是弄会了。
之所以卡了这么长时间是因为这个广搜题和其他在地图上的广搜不一样,有点无从下手。
思路就是枚举每次操作,虽说给了3个操作,但是对于两个杯子来说其实是6个操作。
比较新奇的思路就是用一个repeat[][]数组记录当前两杯水的量是否被搜过,还有最后输出操作的时候是按存好的前驱递归输出的。

  • 最近发现好像要输出中间过程的题都可以在算法进行过程中记录前驱然后递归输出,目前发现适用于DP和搜索

AC代码:

#include<cstdio>
#include<vector>
using namespace std;
struct SET
{ int a,b,father,set;
}OT[10000005],OTing;
bool repeat[105][105];
int main()
{int A,B,C,f=0,l=1;scanf("%d%d%d",&A,&B,&C);OT[0].a=0;OT[0].b=0;OT[0].father=-1;OT[0].set=-1;repeat[0][0]=true; while(f<l){for(int i=1;i<=6;i++) {OTing=OT[f];OTing.set=i;OTing.father=f;switch(OTing.set){case 1: OTing.a=A; break;case 2: OTing.b=B; break;case 3: OTing.a=0; break;case 4: OTing.b=0; break;case 5: if(OTing.b+OTing.a<=B) OTing.b+=OTing.a,OTing.a=0;else OTing.a=OTing.a-(B-OTing.b),OTing.b=B;break;case 6:if(OTing.a+OTing.b<=A) OTing.a+=OTing.b,OTing.b=0;else OTing.b=OTing.b-(A-OTing.a),OTing.a=A;break;}if(repeat[OTing.a][OTing.b]) continue; repeat[OTing.a][OTing.b]=true;OT[l++]=OTing;if(OTing.a==C || OTing.b==C) {vector<int> ans; int G=l-1;while(true){ans.push_back(OT[G].set);G=OT[G].father;if(G==-1) break;}int size=ans.size()-1;printf("%d\n",size);for(int i=size-1;i>=0;i--)switch(ans[i]){case 1: printf("FILL(1)\n");break;case 2: printf("FILL(2)\n");break;case 3: printf("DROP(1)\n");break;case 4: printf("DROP(2)\n");break;case 5: printf("POUR(1,2)\n");break;case 6: printf("POUR(2,1)\n");break;}return 0;}}f++;}printf("impossible\n");return 0;
}

代码参考自https://blog.csdn.net/C20192419MYS/article/details/74390617

OPJ2.5基本算法之搜索2152:Pots相关推荐

  1. OPJ2.5基本算法之搜索200:Solitaire

    OPJ2.5基本算法之搜索200:Solitaire 题目传送门 看网上的题解有点少,我就来水 写一篇博客,给有需要的宝宝们 思路:八维数组!同时搜四个点!干就完了!虽然OPJ的数据水,但还是要有一些 ...

  2. (十一)进阶算法之“搜索排序”

    进阶算法之"搜索排序" 排序和搜索简介 排序和搜索是什么? JS中的排序和搜索 排序算法 搜索算法 Javascript实现:冒泡排序 Javascript实现:选择排序 Java ...

  3. 直播报名|美团技术沙龙:美团算法实践——搜索、广告、推荐专场

    [美团技术沙龙]由美团技术团队和美团科协主办,每期沙龙邀请美团及其他互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域. 从2020年9月起,美团技术沙龙还将打造一系列学术活动,包括顶会论 ...

  4. OPJ2.1基本算法之枚举1815:画家问题

    OPJ2.1基本算法之枚举 1815:画家问题 题目传送门 描述 有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的.Bob是个画家,想把全部的砖都涂成黄色.但他的画笔 ...

  5. OPJ2.1基本算法之枚举7217:猴子吃桃

    OPJ2.1基本算法之枚举&&7217:猴子吃桃 题目传送门 思路:就是一个脑筋急转弯--(话说这一章有好多脑筋急转弯问题--) 因为每次分的时候,都会多出来一个,对于N个猴子,如果给 ...

  6. 【NOI】6264:走出迷宫/ 2.5基本算法之搜索

    6264:走出迷宫 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会 ...

  7. 【每日一算法】搜索插入位置

    微信改版,加星标不迷路! 每日一算法-搜索插入位置 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于 ...

  8. python【数据结构与算法】搜索初探

    文章目录 1 前言 2 回溯算法 2.1 DFS 3 BFS 3.1 伪码描述 4 Presentation of Code 4.1 深搜-stack实现 4.2 广搜-queue实现 5 总结 1 ...

  9. 算法之------搜索篇

    搜索 前言 深度优先搜素 如何搜索 迭代加深 加成序列 导弹防御系统 BFS 变形 双端队列BFS 优先队列BFS 双向BFS 噩梦 字串变换 前言 人人都说搜素搜素有手就行,我听起来啥感觉自己没手呢 ...

最新文章

  1. 第四节 RabbitMQ在C#端的应用-客户端连接
  2. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(1)
  3. 【新手教程】如何向App Store提交应用
  4. 如何检查项目的需求是否完整
  5. 设计模式C++实现(1)——工厂模式
  6. 计算机辅助工艺设计张胜文,计算机辅助工装设计.ppt
  7. 一个sql题目, 统计每年每月的信息
  8. 语言非递归求解树的高度_算法素颜(11):无死角“盘”它!二分查找树
  9. 财务管理属于计算机网络,浅谈如何应用计算机网络进行财务管理
  10. 【Flink】Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型
  11. 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)
  12. python网址编码转换_python实现中文转换url编码的方法
  13. MDK3358平台QT示例-ADS1110温度采集示例
  14. [思考进阶]02 如何进行认知升级?
  15. indexOf 的使用
  16. 永磁体磁偏角测试原理和测量设备介绍
  17. 假期最后一天!Go1.16 重磅发布,新版本特性一览
  18. Rasa课程、Rasa培训、Rasa面试系列之 Rasa对话式 AI 网络研讨会回顾
  19. CISSP资料:独家笔记
  20. 软件工程导论作业2.3

热门文章

  1. 百度开放云·10大解决方案
  2. XMPP协议的原理介绍
  3. .net5项目集成百度富文本编辑器umeditor最全教程(含源码)
  4. 名词解释第二十八讲:跨链
  5. 如何取消满意度评价,去除满意度评价
  6. 全球与中国家庭健康中心市场深度研究分析报告
  7. Python控制安卓模拟器
  8. s-function搭建变参数PMSM模型
  9. 小程序毕业设计 基于微信汽车租赁租车小程序毕业设计开题报告功能参考
  10. uniapp实现当行多图片点击预览