为什么第二题就这么难呜呜呜,这不是为难我吗!!!

可以明确的是,又是一个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跳蚱蜢的更多相关文章

  1. 蓝桥杯 跳蚱蜢 (bfs)

    转载自:https://blog.csdn.net/wayway0554/article/details/79715658 本题的解题关键就在于将蚱蜢在跳转换为盘子在跳. 当使用string当做每一个 ...

  2. [蓝桥杯2017初赛]跳蚱蜢 BFS

    题目描述 如图所示: 有9只盘子,排成1个圆圈.其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8.每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空 ...

  3. 2016蓝桥杯省赛C/C++A组第二题 跳蚱蜢

    题意:有9只盘子,排成1个圆圈.  其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中.  请 ...

  4. (蓝桥杯)第八届A组C/C++跳蚱蜢

    #include<iostream> #include<memory.h> #include<stack> #include<string> #incl ...

  5. 2017第八届蓝桥杯C/C++语言A组

    一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...

  6. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  7. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  8. 移动端访问PC站点时自动跳转至移动站点

    方法一: 百度Site APP的uaredirect.js 实现手机访问,自动跳转 <script src="http://siteapp.baidu.com/static/webap ...

  9. 【HTML】Html页面跳转的5种方式

    目录结构: // contents structure [-] html实现 javascript方式实现 结合了倒数的javascript实现(IE) 解决Firefox不支持innerText的问 ...

随机推荐

  1. linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

    最近开发项目的时候发现公司服务器用root账号登录的时候 一直会提示有新的信件,一直提示一直提示. 联想到另一台服务器上 的dead.letter文件每天都不断的变大  而且在 root家目录里 ,系 ...

  2. HDU 5969 最大的位或【贪心】

    题目 B君和G君聊天的时候想到了如下的问题. 给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大. 其中|表示按位或,即C. C++. Ja ...

  3. 2020 最新省市区 sql

    一个基于有赞的 area.js 生成的sql area.js 简单的写了一个js 生成了sql语句 sql文件 完整代码

  4. JavaScript图形实例:递归生成树

    观察自然界中树的分叉,一根主干生长出两个侧干,每个侧干又长出两个侧干,以此类推,便生长出疏密有致的结构.这样的生长结构,使用递归算法可以模拟出来. 例如,分叉的侧干按45°的偏转角度进行生长的递归示意 ...

  5. 利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

  6. 转载--gulp入门

    关于gulp的入门文章,先转载了 http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/

  7. Vue中computed的本质及与methods的区别

    一.computed的本质? computed为什么不像methods一样加小括号使用? 正常使用computed方式 运行结果 至于为什么computed为什么不像methods一样使用小括号调用, ...

  8. mysql逗号分隔问题

    1.说明: 之前写了一个发先了有点问题, 用正则去匹配的会匹配多了数据,所以优化下 媒资表(asset_baseinfo)里面有地区,如下,如果一个节目包含多个地区,id存在如下 地区表(produc ...

  9. like's photos

    wallhaven官网

  10. VSCode 配 uni-app

    CLI工程 全局安装vue-cli npm install -g @vue/cli 通过cli创建uni-app项目 vue create -p dcloudio/uni-preset-vue uni ...