記憶化搜尋專題 nkoj3748玩具取名

2021-07-22 04:47:14 字數 1308 閱讀 5454

p3748

玩具取名

時間限制 : 

- ms   空間限制 : 

65536 kb

評測說明 : 時限1000ms

問題描述

某人有一套玩具,並想法給玩具命名。首先他選擇wing四個字母中的任意乙個字母作為玩具的基本名字。然後他會根據自己的喜好,將名字中任意乙個字母用「wing」中任意兩個字母代替,使得自己的名字能夠擴充得很長。現在,他想請你猜猜某乙個很長的名字,最初可能是由哪幾個字母變形過來的。

輸入格式

第一行四個整數w、i、n、g。表示每乙個字母能由幾種兩個字母所替代。

接下來w行,每行兩個字母,表示w可以用這兩個字母替代。

接下來i行,每行兩個字母,表示i可以用這兩個字母替代。

接下來n行,每行兩個字母,表示n可以用這兩個字母替代。

接下來g行,每行兩個字母,表示g可以用這兩個字母替代。

最後一行乙個長度不超過len的字串。表示這個玩具的名字。

輸出格式

一行字串,該名字可能由哪些字母變形而得到。(按照wing的順序輸出)

如果給的名字不能由任何乙個字母變形而得到則輸出「the name is wrong!」

樣例輸入

1 1 1 1

iiww

wwig

iiii

樣例輸出in

提示w可以變成ii所以iiii可以縮成ww in均能變成ww所以ww又可以縮成i或者n 所以最終答案應該按照「wing」的順序輸出in

[資料範圍]

100%資料滿足len<=200,w、i、n、g<=16

#include#include#include#include#includeusing namespace std;

bool flag=false;

int w,i,n,g,len;

int a[10][20][3];

int num[10];

bool f[205][205][10];

bool mark[205][205][10];

int oi[205];

char p[5]=;

int id(char b)

bool dp(int l,int r,int k)

for(h=1;h<=num[k];h++)

for(j=1;j<=i;j++)

for(j=1;j<=n;j++)

for(j=1;j<=g;j++)

cin>>s;

len=s.length();

for(i=0;i

記憶化搜尋專題

0.前言 有些時候樸素深蒐會出現超時情況,所以誕生出一種記憶化搜尋的dfs,其實它也是dfs,只不過在dfs的過程中,新增了賦值的過程,這個賦值的過程就叫做記憶。這裡面會根據一些題目來講解記憶化搜尋。1.樣例分析 1.1 題目 絡谷 p1434滑雪 1.2分析 1.3 include using n...

記憶化搜尋專題 nkoj3698方塊消除

p3698 方塊消除 時間限制 ms 空間限制 65536 kb 評測說明 時限1000ms 問題描述 有n個帶顏色的方塊排成一排,相同顏色的方塊連成一段同色區域,如下圖所示 遊戲時,玩家可以任選一段同色區域,將其消去。設消去的這段包含x個相同顏色的方塊,則此次消除操作的得分為x 2。然後右邊的所有...

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...