金字塔转换矩阵
class Solution {
public:
bool huisu(string& nowStr, string nextStr, vector<string> allowed)
{
int nowStrsize = nowStr.size();
int nextStrsize = nextStr.size();
if (nowStr.size() == 1)
return true;
if (nowStrsize - nextStrsize> 1)
{
auto str_temp = nowStr.substr(nextStrsize, 2);
//还是需要循环来判断一下是否有,少不了的
for (auto t = 'A'; t <= 'G'; ++t)
{
auto it=find(allowed.begin(), allowed.end(), str_temp + t);
if (it!=allowed.end())
{
string temp_next = (*it).substr(2);
if (huisu(nowStr, nextStr + temp_next, allowed))
{
return true;
}
}
}
return false;
}
else
{
return huisu(nextStr, "", allowed);
}
}
bool pyramidTransition(string bottom, vector<string>& allowed)
{
//使用什么方法呢,深度优先遍历搜索的算法
//map<string, string> all;
string nextStr;
return huisu(bottom, nextStr, allowed);
}
};