單詞接龍 DFS 洛谷P1019

主要是字符串拼接處理比較麻煩(下見mix函數),DFS還是比較簡單的

鑒定

讀題有坑 注意max_初始化

短小精悍(?)的深搜代碼:

#include <iostream>
#include <string>
using namespace std;
int n,max_;
string str[20];
int b[20];
int mix(string str1, string str2) {//如果沒有重疊部分就返回-1,否則返回重疊部分開始的位置
    for(int k=str1.size()-1; k>=0; k--) {//貪心,為了讓合并后的字符串盡量長一定要從后往前判斷
        bool r=1;
        int i_2=0;
        for(int i=k; i<=str1.size()-1; i++) {
            if(!(i_2<=str2.size()-1)) {//判斷str2邊界
                r=0;
                break;
            } else if(str1[i]!=str2[i_2]) {
                r=0;
                break;
            }
            i_2++;
        }
        if(r) return k;
    }
    return -1;
}
void search(int cur, string s) {
    bool bb=1;//bb規定:0表示有至少一個解,1表示此情況無解
    for(int i=0; i<n; i++)
        if(b[i]<=1) {//注意每個單詞可以用兩次
            bb=0;
            int t=mix(s,str[i]);
            if(t!=-1) {
                string news;
                for(int i=0; i<=t-1; i++)
                    news+=s[i];
                news+=str[i];//合并兩個字符串
                b[i]+=1;
                search(cur+1, news);
                b[i]-=1;
            }
        }
    if(bb&&max_<s.size())
        max_=s.size();//更新max_
}
int main() {
    ios::sync_with_stdio(false);//cin cout速度嗖嗖嗖
    cin>>n;
    for(int i=0; i<=n-1; i++)
        cin>>str[i];
    char a;
    cin>>a;
    for(int i=0; i<n; i++)
        if(str[i][0]==a) {//枚舉每個以字符a開頭的字符串
            b[i]=1;
            string t=str[i];
            if(max_<t.size()) {
                max_=t.size();//初始化max_
            }
            search(0, t);//開搜!
            b[i]=0;
        }
    cout<<max_;
    return 0;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,272評論 0 4
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明AGI閱讀 16,019評論 3 119
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中,引用類型是一種數據結構,用于將數...
    霜天曉閱讀 1,104評論 0 1
  • 《六祖壇經》 (三十三) 原文: 世人若修道,一切盡不妨。 常自見己過,與道即相當。 (三十四) 原文: 色類自有...
    岳曉晴閱讀 2,661評論 0 2
  • 朔風吹雨打垂簾,濕了小紅箋。詩留筆底,詞書紙上,思在眉前。 梧桐苑冷人獨立,向晚卻憑欄。何方雁影?何時歸信?何處青衫?
    莫愁Jessie閱讀 245評論 4 6