当年话下
#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;elsecout<<-1;return 0;}