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