链接:https://ac.nowcoder.com/acm/problem/15294
来源:牛客网

题目描述

有一只乌龟,初始在0的位置向右跑。
这只乌龟会依次接到一串指令,指令T表示向后转,指令F表示向前移动一个单位。乌龟不能忽视任何指令。
现在我们要修改其中正好n个指令(一个指令可以被改多次,一次修改定义为把某一个T变成F或把某一个F变成T)。
求这只乌龟在结束的时候离起点的最远距离。(假设乌龟最后的位置为x,我们想要abs(x)最大,输出最大的abs(x))

输入描述:

  1. 第一行一个字符串c表示指令串。c只由FT构成。
    第二行一个整数n
    1 <= |c| <= 100, 1 <= n <= 50

输出描述:

  1. 一个数字表示答案。
示例1

输入

  1. FT
  2. 1

输出

  1. 2
示例2

输入

  1. FFFTFFF
  2. 2

输出

  1. 6
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<math.h>
  6. #include<string>
  7. #define ll long long
  8. #define inf 0x3f3f3f3f
  9. using namespace std;
  10.  
  11. string str;
  12. int n,ans,m,len;
  13. bool mp[][][][];///操作次数 剩余修改次数 位置 方向
  14. ///二维中0表示往回走,1表示往前走
  15.  
  16. void dfs(int step,int s,int x,int d)///操作到哪个指令 剩余修改指令次数 当前位置 方向
  17. {
  18. if(s<) return ;///dfs递归进来后,修改次数不够
  19. int flag;
  20. if(d==-)
  21. flag=;///往回走
  22. else
  23. flag=;///往前走
  24. if( mp[step][s][x+][flag] ) return;///如果这套状态之前的dfs中走出现过,直接返回,因为以前已经往不同情况dfs过了
  25. mp[step][s][x + ][flag] = true;///标记出现过的情况
  26. if(step==len)///指令已经操作完了,可以结束了
  27. {
  28. if(s%==) ///如果修改指令的次数还剩偶数次,这个答案是可行的,否则不行
  29. ans=max(ans,abs(x));
  30. return;
  31. }
  32. if( str[step]=='T' )///常规操作是转身
  33. {
  34. dfs(step+,s-,x+d,d);///执行操作指令step+1,修改指令后s-1,改成F会走动,方向不变
  35. dfs(step+,s,x,-d);///执行操作指令step+1, 不修改指令,
  36. }
  37. else
  38. {
  39. dfs(step+,s,x+d,d);
  40. dfs(step+,s-,x,-d);
  41. }
  42. }
  43.  
  44. int main()
  45. {
  46. while(cin>>str>>n)/// TF串,F表示前进一格, T表示转身,但是不走动
  47. {
  48. ///n表示可以修改指令的次数,一定要修改
  49. len=str.size();
  50. memset(mp,false,sizeof(mp));
  51. ans=-;
  52. dfs(,n,,);///起始方向为正
  53. printf("%d\n",ans);
  54. }
  55. return ;
  56. }

牛客网-乌龟跑步-(四维dfs)的更多相关文章

  1. 牛客 70E 乌龟跑步 (bitset优化dp)

    有一只乌龟,初始在0的位置向右跑. 这只乌龟会依次接到一串指令,指令T表示向后转,指令F表示向前移动一个单位.乌龟不能忽视任何指令.现在我们要修改其中正好n个指令(一个指令可以被改多次,一次修改定义为 ...

  2. 牛客网 牛客练习赛13 B.幸运数字Ⅱ-数组 or DFS

    B.幸运数字Ⅱ 链接:https://www.nowcoder.com/acm/contest/70/B来源:牛客网     这个题就是找出来数据范围内的所有的幸运数,然后直接区间累加起来就可以了. ...

  3. Beautiful Numbers(牛客网)

    链接:https://ac.nowcoder.com/acm/problem/17385来源:牛客网 题目描述 NIBGNAUK is an odd boy and his taste is stra ...

  4. 牛客网练习赛23 F 托米的游戏

    链接:https://www.nowcoder.com/acm/contest/156/F 来源:牛客网 题目描述 题目背景编不下去了 托米有一棵有根树 T, 树根为1,每轮他会在剩下的子树中等概率一 ...

  5. 【转自牛客网】C++类职位校招

    作者:./a.out链接:https://www.nowcoder.com/discuss/14022来源:牛客网 话说在牛客网上混迹了半年,也没啥拿的出手的贡献.现在基本上自己的校招生涯要告一段落, ...

  6. 2018年牛客网NOIP赛前训练营游记

    2018年牛客网NOIP赛前训练营游记 提高组(第一场) 中位数 #include<cstdio> #include<cctype> #include<climits&g ...

  7. 牛客网国庆集训派对Day4题目 2018年

    链接:https://www.nowcoder.com/acm/contest/204/A来源:牛客网 深度学习 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他 ...

  8. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp

    链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...

  9. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)

    链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...

随机推荐

  1. SQL注入之Sqli-labs系列第三十关(基于WAF防护的双引号报错注入)和三十一关

    开始挑战第三十关和三十一关(Protection with WAF) 0x1 前言 这关其实和29关是同样的,login.php页面存在防护,只要检测到存在问题就跳转到hacked.php页面,不同的 ...

  2. 【Java】字符串工具类

    import android.annotation.SuppressLint; import java.io.UnsupportedEncodingException; import java.uti ...

  3. N阶乘尾部的0个数

    N阶乘尾部的0个数 描述 设计一个算法,计算出n阶乘中尾部零的个数 思路: 1.1 * 2 * 3 * ... * n --> 1 * 2 * 3 * (2 * 2) * 5 * (2 * 3) ...

  4. 19/03/17Python笔记

    一.判断元素是否为数字 ".isdigit() #判断123是不是数字,是的话输出True,不是输出False 二.标志位 需要死循环时,不一定用 while True 还可以用 while ...

  5. stylelint 安装配置

    1.安装 stylelint: npm i stylelint -g npm i stylelint stylelint-config-standard --save-dev 2.在 scripts ...

  6. js中常用的内置对象

    Arguments 函数参数集合 arguments[ ] 函数参数的数组 Arguments 一个函数的参数和其他属性 Arguments.callee 当前正在运行的函数     Argument ...

  7. 将文件夹下的所有csv文件存入数据库

    # 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...

  8. redis 的备份策略,最好使用:RDB-AOF 混合持久化

    相关资料: Redis 4.0 新功能简介:RDB-AOF 混合持久化:http://blog.huangz.me/2017/redis-rdb-aof-mixed-persistence.html ...

  9. Guava 2:Basic utilities基本工具

    一.引子 Guava的经典很大一部分原因来源于对于基础工具类的封装,使用这些类能够让我们的代码更加优雅且完善,这些类大部分都在com.google.common.base包下. 注:JDK有很多借鉴g ...

  10. mysql: 查看某库表大小

    查询所有数据库占用磁盘空间大小的SQL语句: 语句如下 1 2 3 4 5 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/102 ...