LQB2017A02跳蚱蜢


为什么第二题就这么难呜呜呜,这不是为难我吗!!!
可以明确的是,又是一个bfs
最少路径,找满足条件的那个层数
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <strings.h>
#include <queue>
#include <set>
#include <cstring> using namespace std;
char *start="";
char *target=""; struct StateAndLevel{
char *state;
int level;
int pos0;//记录0的位置
StateAndLevel(char *_state,int _level,int _pos0):state(_state),level(_level),pos0(_pos0){};//构造函数
}; void swap(char *s,int a,int b) {
char t=s[a];
s[a]=s[b];
s[b]=t;
}
struct cmp{
bool operator ()(char *a,char *b){
return strcmp(a,b)<; }
};
queue<StateAndLevel> q; set<char *,cmp> allState;//set需要重载一下()运算符:set是用来去重的,但是你得定义啥是重复啊 void addN(char *state,int pos,int newpos,int le){ //添加其他队列成员
char *new_state1 = (char *) malloc( * sizeof(char));
strcpy(new_state1, state);//把原字符串拷贝过来,然后进行改变
//首先寻找一下合适的位置 //移动字符以形成新的字符串
swap(new_state1, pos, newpos);
//将改变后的字符插入到set和queue里,注意需要判断是否重复
if (allState.find(new_state1) == allState.end()) {
allState.insert(new_state1);
q.push(StateAndLevel(new_state1, le + , newpos));//注意你现在操作的是sal的成员
}
} int main() {
q.push(StateAndLevel(start, , ));//先把初始的放进去
while (!q.empty())//套路!!!
{
StateAndLevel sal = q.front(); char *state = sal.state;
int le = sal.level;
cout<<le<<" "<<endl;
if (strcmp(state, target) == ) {
cout << le;
return ;
}
int pos = sal.pos0;//取出所有的当前值,添加到set中去
allState.insert(state); int newpos = (pos + + ) % ;
addN(state, pos, newpos, le); int newpos2 = (pos - + ) % ;
addN(state, pos, newpos2, le); int newpos3 = (pos - + ) % ;
addN(state, pos, newpos3, le); int newpos4 = (pos + + ) % ;
addN(state, pos, newpos4, le);
q.pop(); } }
那个add函数,
就是生成一个新的位置,
更改出那个新的字符
然后level+1
其实用bfs搞最小挺常见的emmmmmm
LQB2017A02跳蚱蜢的更多相关文章
- 蓝桥杯 跳蚱蜢 (bfs)
转载自:https://blog.csdn.net/wayway0554/article/details/79715658 本题的解题关键就在于将蚱蜢在跳转换为盘子在跳. 当使用string当做每一个 ...
- [蓝桥杯2017初赛]跳蚱蜢 BFS
题目描述 如图所示: 有9只盘子,排成1个圆圈.其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8.每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空 ...
- 2016蓝桥杯省赛C/C++A组第二题 跳蚱蜢
题意:有9只盘子,排成1个圆圈. 其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中. 请 ...
- (蓝桥杯)第八届A组C/C++跳蚱蜢
#include<iostream> #include<memory.h> #include<stack> #include<string> #incl ...
- 2017第八届蓝桥杯C/C++语言A组
一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...
- a标签点击跳转失效--IE6、7的奇葩bug
一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- 移动端访问PC站点时自动跳转至移动站点
方法一: 百度Site APP的uaredirect.js 实现手机访问,自动跳转 <script src="http://siteapp.baidu.com/static/webap ...
- 【HTML】Html页面跳转的5种方式
目录结构: // contents structure [-] html实现 javascript方式实现 结合了倒数的javascript实现(IE) 解决Firefox不支持innerText的问 ...
随机推荐
- 修改CentOS7登录欢迎界面信息
vi /etc/issue 添加自己喜欢的内容,保存即可. 特殊字符的含义: \d 本地端时间的日期: \l 显示第几个终端机接口: \m 显示硬件的等级 (i386/i486/i586/i686.. ...
- 联通BSS-ESS-CBSS系统安装相关
前言 1. 版本信息 版本 日期 记录 1.0 2016.08.15 初始版本 2. 作者信息 信息 内容 部门 夷陵区分公司 作者 Z.J.T 邮箱 coralfoxzjt@163.com 必须操作 ...
- Fetch方法封装、业务实践
说Fetch之前啊,我们不得不说一说Ajax了,以前使用最多的自然是jQuery封装的Ajax方法了,强大而且好用. 有人说了,jQuery的Ajax都已经封装得那么好了,你还整Fetch干什么,这不 ...
- 利用Cython对python代码进行加密
利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...
- 解决idea中“系统找不到指定路径”的问题
有时在其他工具中运行正确的项目,在idea中运行会报路径找不到的错误. 该路径是相对路径的情况下,很有可能是因为idea中的工作空间没有选择正确而导致的.设置工作空间: 该目录没有配置到你运行的模块, ...
- SimpleImputer 中fit和transform方法的简介
sklearn.impute.SimpleImputer 中fit和transform方法的简介 SimpleImputer 简介 通过SimpleImputer ,可以将现实数据中缺失的值通过同一列 ...
- scrapy (三) : 请求传参
scrapy 请求传参 1.定义数据结构item.py文件 ''' field: item.py ''' # -*- coding: utf-8 -*- # Define here the model ...
- 数据可视化之PowerQuery篇(九)巧用Power Query,Excel也可以轻松管理文档
https://zhuanlan.zhihu.com/p/111674088 来自知乎一个朋友的问题,如何在Excel中批量插入文件的超链接,以便在Excel中对文档进行有序的目录管理? 这个问题的 ...
- YAPI工具配置LDAP统一用户认证
背景:因为搭建了LDAP,因此希望将所有配置库或工具都使用LDAP进行统一用户认证,YAPI是其中一个. YAPI:使用docker-compose进行了安装,具体安装步骤自行百度. LDAP:使用d ...
- 【IDEA】创建maven项目,webapp没有被标识,无法识别
问题描述 新建maven项目模块后,webapp目录未被标识,也就是没有小蓝点的图标显示. 解决方法 点击"File"下的"Project Strucure", ...