全排列一个个试,毫无算法。。。复杂度贼高。。 #include<iostream> #include <string> using namespace std; int book[100], num=4, cou=1; char *word[4] = { "ab","bc","cd","bf" }; bool dfs(int num, char ** arr,char tail) {     if (cou == num )         return true;     for (int i = 0; i < num; ++i)//一个个当首单词     {         if (book[i] == 0 && arr[i][0] == tail)         {             book[i] = 1;             cou++;             if (dfs(num, arr, arr[i][strlen(arr[i]) - 1]))                 return true;             book[i] = 0;             cou--;         }     }     return false; } int canArrangeWords(int num, char ** arr) {     if (num == 1)         return 1;     for (int i = 0; i < num; ++i)//一个个当首单词     {         book[i] = 1;         bool zq=dfs(num,arr,arr[i][strlen(arr[i])-1]);         book[i] = 0;         cou = 1;//链子里只有第一个单词了         if (zq)              return 1;     }     return -1; } int  main() {     int res = canArrangeWords(num, word);     cout << res << endl;     system("pause");     return 0; }
点赞 评论

相关推荐

牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务