机器人(rabot)题解

项目场景:

测试点编号测试点时限测试点内存
#11s256m
#21s256m
#31s256m
#41s256m
#51s256m
#61s256m
#71s256m
#81s256m
#91s256m
#101s256m

问题描述

机器人(rabot) 查看测评数据信息

南海区机器人比赛即将开始,该比赛的的规则如下:

1、将机器人摆放在数轴0的位置。

2、机器人只能向左或向右走,

3、参赛选手可以编写指令:F(向前走一步),T(掉头)。

现在笑笑写了一串指令准备去参赛,由于笑笑有很强的计算能力,他可以马上知道机器人最后会走到哪里。为了难倒笑笑,他的好朋友酷酷就说,现在让你修改其中n个指令,使得机器人移动到离起点最远的地方。(修改是指“T”变成“F”,或“F”变成“T”,可以对同一个指令多次修改)。

输入格式

第一行一个字符串S代表指令

接下来一行一个整数n,表示要修改的指令个数

输出格式

共一行,一个正整数,表示离起点(位置0)最远的距离

输入/输出例子1

输入:

FFFTFFF

2

输出:

6

样例解释

数据范围

1<=len(s)<=100

1<=n<=50

APP 中接收数据代码:

#include<bits/stc++.h>
using namespace std;
string s;
int len,n,ans=0;
bool vis[109][59][209][2];
void dfs(int index,int sum,int ex,int step){
    if(vis[idex][sum][ex+100][step+1]) return ;
    vis[index][sum][ex+100][step+1]=1;
    if(index>s.size()-1||sum>=n) return ;
    if(sum==n&&index==s.size()){
        ans=max(ans,abs(ex));
        return ;
    }
    if(s[index]=='T'){
        dfs(index+1,sum+1,ex+step,step);
        dfs(index+1,sum,ex,-step);
    }
    if(s[index]=='F'){
        dfs(index+1,sum+1,ex,-step);
        dfs(index+1,sum,ex+step,step);
    }
    dfs(index,sum+2,ex,step);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>s>>n;
    dfs(0,0,0,1);
    printf("%d"ans);
    return 0;
}

原因分析:


解决方案:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值