1 回答
TA贡献1890条经验 获得超9个赞
#include <iostream>
#include <vector>
#include <algorithm>
typedef pair<char,char> type;
bool dfs(vector<type> &a, char key)
{
if(a.empty())
{
return true;
}
else
{
int n=a.size();
for(int i=0;i<n;i++)
{
if(a[i].first==key)
{
auto tmp=a[i];
a.erase(a.begin()+i);
auto flag=dfs(a,tmp.second);
a.insert(a.begin()+i,tmp);
if(flag)
{
return true;
}
}
}
return false;
}
}
int main() {
vector<string> a={"abcd","hkl","dk","kj","jh"};
int n=a.size();
vector<type> a_pair;
for(auto t:a)
{
a_pair.push_back(make_pair(t.front(),t.back()));
}
bool flag=false;
for(int i=0;i<n;i++)
{
auto tmp=a_pair[i];
a_pair.erase(a_pair.begin()+i);
flag=dfs(a_pair,tmp.second);
a_pair.insert(a_pair.begin()+i,tmp);
if(flag)
break;
}
if(flag)
cout<<1;
else
cout<<-1;
return 0;
}
添加回答
举报