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

题目描述

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

输入描述:

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

输出描述:

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

输入

FT
1

输出

2
示例2

输入

FFFTFFF
2

输出

6
 #include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; string str;
int n,ans,m,len;
bool mp[][][][];///操作次数 剩余修改次数 位置 方向
///二维中0表示往回走,1表示往前走 void dfs(int step,int s,int x,int d)///操作到哪个指令 剩余修改指令次数 当前位置 方向
{
if(s<) return ;///dfs递归进来后,修改次数不够
int flag;
if(d==-)
flag=;///往回走
else
flag=;///往前走
if( mp[step][s][x+][flag] ) return;///如果这套状态之前的dfs中走出现过,直接返回,因为以前已经往不同情况dfs过了
mp[step][s][x + ][flag] = true;///标记出现过的情况
if(step==len)///指令已经操作完了,可以结束了
{
if(s%==) ///如果修改指令的次数还剩偶数次,这个答案是可行的,否则不行
ans=max(ans,abs(x));
return;
}
if( str[step]=='T' )///常规操作是转身
{
dfs(step+,s-,x+d,d);///执行操作指令step+1,修改指令后s-1,改成F会走动,方向不变
dfs(step+,s,x,-d);///执行操作指令step+1, 不修改指令,
}
else
{
dfs(step+,s,x+d,d);
dfs(step+,s-,x,-d);
}
} int main()
{
while(cin>>str>>n)/// TF串,F表示前进一格, T表示转身,但是不走动
{
///n表示可以修改指令的次数,一定要修改
len=str.size();
memset(mp,false,sizeof(mp));
ans=-;
dfs(,n,,);///起始方向为正
printf("%d\n",ans);
}
return ;
}

牛客网-乌龟跑步-(四维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. cocos2dx创建win32项目一般步奏

    1.导入一个新项目步奏:解决方案:右键->添加->添加现有项目->添加依赖项目libCocoStudioD:\work\CannonDefender\cocos2d\cocos\ed ...

  2. Ajax请求传递数组参数

    var ids = []; var rows=$("#tt").datagrid("getSelections"); for(var i=0; i<row ...

  3. 《Linux内核原理与分析》第五周作业

    课本:第4章 系统调用的三层机制(上) -用户态.内核态和中断 -用户态:在低的执行级别下,代码能够掌控的范围有所限制,只能访问部分内存. -内核态:在高的执行级别下,代码可以执行特权指令,访问任意的 ...

  4. Idea基于maven搭建多模块单体结构项目

    菜鸟教程 一.创建一个公共的父工程: 1.1 创建一个新的maven项目: 1.2 先创建公共的父工程,选择maven骨架: 1.3 配置maven: 1.4 填写groupId.artifactId ...

  5. html框架以及属性字体应用

    今日java开课,下午老师讲解了java的第一节课,有关于html的框架,为了自己方便以后也会在日记中添加一些便签方便自己使用. 了解这一些之后老师发布的作业也让我对码代码有了更深的认知,码完作业之后 ...

  6. DRBD搭建

    基于块设备在不同的高可用服务器之间同步和镜像数据的软件,块设备可以是磁盘分区,LVM逻辑卷或整块磁盘,解决磁盘单点故障 三种复制协议 (1)协议A:异步复制协议,本地写成功后立即返回,数据放在发送bu ...

  7. lvm快照

    磁盘快照的使用(快照好像只可以使用一次,用过后自动删除) 首先在 /bplvm 下随便创建一个文件,如a.txt 然后执行命令 lvcreate -L 120M -s -n SNAP /dev/sto ...

  8. oracle-rman-3

    http://blog.csdn.net/leshami/article/details/6032525 rman概述及体系结构 http://blog.itpub.net/23513800/view ...

  9. paramiko实现上传目录

    使用paramiko上传目录,重点是上传的那个过程,想了一上午才想出来,可能有点奇葩,但是还是实现了这个功能 #!/usr/bin/python import paramiko import os d ...

  10. [转]python中pandas库中DataFrame对行和列的操作使用方法

    转自:http://blog.csdn.net/u011089523/article/details/60341016 用pandas中的DataFrame时选取行或列: import numpy a ...