首页 > 其他分享 >[ABC361D]Go Stone Puzzle

[ABC361D]Go Stone Puzzle

时间:2024-07-10 17:10:00浏览次数:12  
标签:字符 Stone int Puzzle 交换 空格 搜索 Go 顺序搜索

题目大意

给定一个字符串S,它是由B和W组成,之后在S后面添加两个空格,可以将相邻的两个字符和空格进行交换,交换的前提是只能相邻,同时两个字符必须都是B或者W,再给一个字符串T,也是由B和W组成,问最小经过几次交换,使得S变成T

\(1 \leq |S| \leq 14\)

题解:

看到数据范围,一看就知道是个搜索,怎么搜索?
\(dfs(int k,int p,int sum)\)表示就是搜索到第k个位置,空格在第p个位置,交换次数为sum
对于每个位置,我们可以进行交换,也可以不进行交换,这样搜索有一个问题,我这里是顺序搜索,字符和空格进行交换,但是空格也可以和字符交换,顺序搜索已经到空格了,我们无法知道他的交换范围,如果我们进行了交换,他交换了回去我们就无法搜索了,因为是顺序搜索,所以这个搜索是错的

经过学生提醒,这个是bfs,我突然想到该怎么做了,我把每一种交换状态记录下来,同时使用map记录一下每一个状态有没有被记录过,这个题就很容易做了

这个题最重要的启示就是看到数据范围小的话,只想到dfs,看到最小步骤的话,还可以想到bfs

标签:字符,Stone,int,Puzzle,交换,空格,搜索,Go,顺序搜索
From: https://www.cnblogs.com/sdfzls/p/18294541

相关文章

  • 基于SpringBoot + SpringCloud+ElasticSear的在线教育管理系统设计与实现(MySQL、Mongo
    本项目适合做计算机相关专业的毕业设计,课程设计,技术难度适中、工作量比较充实。完整资源获取点击下载完整资源1、资源项目源码均已通过严格测试验证,保证能够正常运行;2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;3、本项目比较适合计算......
  • 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-碰撞框和受伤区域(六)
    文章目录开发思路受击区域设置碰撞层使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一)使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船动画(三)使用Godot4组件制作竖版太空射击游戏_2D卷......
  • sqlx库——在go中写sql
    sqlx库——在go中写sqlsqlx可以认为是Go语言内置的database/sql的超集,基于内置的连接数据库的库,sqlx做了非常好的拓展,使用起来更方便快捷,对于有sql基础的,使用起来会比gorm更顺手下载sqlx依赖在goland终端中输入下面代码,获取sqlx依赖gogetgithub.com/jmoiron/sqlx连......
  • go并发模式 o-channel
    packagemainimport("fmt""time")funcmain(){varorfunc(channels...<-chaninterface{})<-chaninterface{}or=func(channels...<-chaninterface{})<-chaninterface{}{switchlen(channels)......
  • mongodb数据库恢复
    一、从备份中恢复使用mongodump和mongorestoremongodump:MongoDB官方提供的备份工具,可以将MongoDB数据库中的数据导出为BSON格式的文件。通过该工具,可以备份整个数据库、指定的集合或查询的数据。mongorestore:MongoDB官方提供的恢复工具,用于将mongodump导出的BSON文件恢复为Mong......
  • go并发模式 or-do-channel + bridge
    packagemainimport("context""fmt")//orDonefuncorDone(ctxcontext.Context,value<-chanint)<-chanint{ordoneStream:=make(chanint)gofunc(){deferclose(ordoneStream)for{......
  • go并发模式 tee-channel
    packagemainimport("context""fmt""time")functeeChannel(ctxcontext.Context,value<-chanint)(<-chanint,<-chanint){ch1:=make(chanint)ch2:=make(chanint)gofunc(){......
  • go并发模式 pipeline
    packagemainimport("fmt""math/rand")funcmain(){pFn:=func(done<-chaninterface{},fnfunc()int)<-chanint{valueStream:=make(chanint)gofunc(){deferclose(valueStream)......
  • go并发模式 错误处理
    packagemainimport("fmt""net/http")typeResultsstruct{ErrorerrorResponse*http.Response}funcmain(){checkStatus:=func(done<-chaninterface{},urls...string)<-chanResults{re......
  • go并发模式 扇入扇出
    扇入扇出寻找素数:packagemainimport("fmt""math/rand""runtime""sync""time")varrepeatFn=func(done<-chaninterface{},fnfunc()interface{})<-chaninterface{}{valueSt......