烏龜跑步(記憶化搜尋)

2021-09-28 08:05:48 字數 1156 閱讀 4328

題目描述

有乙隻烏龜,初始在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輸入

複製ft1輸出

複製2示例2輸入

複製ffftfff2輸出

複製6很好的一道記憶化搜尋的題目。感覺記憶化搜尋比dp好理解一些。

dp[i][fz][pos][dec]代表著到了第i個指令,還有fz次的反轉機會,到了pos位置,方向是dec(0/1)。

具體解釋看**

#include

#define ll long long

using

namespace std;

int dp[

101][51

][201][2

];string s;

int ans;

int n;

inline

void

dfs(

int i,

int fz,

int pos,

int dec)

if(fz<

0||dp[i]

[fz]

[pos+

100]

[dec]

)return

;//如果沒有反轉次數了,或者這種情況已經出現過了。

dp[i]

[fz]

[pos+

100]

[dec]=1

;//這種情況標記為1。

if(s[i]

=='f'

)else

if(s[i]

=='t')}

intmain()

努力加油a啊,(o)/~

NC16590 烏龜棋 記憶化搜尋

題目鏈結 題意 有 n個 格仔,1 為起點,n為終點 有n個格仔,1為起點,n為終點 有n個格仔,1為起點 n為終點每個 格仔有一 個分 數每個格仔有乙個分數 每個格仔有一 個分數有m種 卡片,每 種卡片有 數字1,2,3,4有m種卡片,每種卡片有數字1,2,3,4 有m種卡片,每種卡片 有數字1 ...

P1541 烏龜棋 記憶化搜尋

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。烏龜棋的棋盤是一行nn個格仔,每個格仔上乙個分數 非負整數 棋盤第1格是唯一的起點,第nn格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中mm張爬行卡片,分成4種不同的型別 mm張卡片中不一定包含所有44種型別的卡片,見樣例 每種型別...

牛客 烏龜跑步

有乙隻烏龜,初始在0的位置向右跑。這只烏龜會依次接到一串指令,指令t表示向後轉,指令f表示向前移動乙個單位。烏龜不能忽視任何指令。現在我們要修改其中正好n個指令 乙個指令可以被改多次,一次修改定義為把某乙個t變成f或把某乙個f變成t 求這只烏龜在結束的時候離起點的最遠距離。假設烏龜最後的位置為x,我...