單詞接龍 DFS 洛谷P1019

主要是字符串拼接處理比較麻煩(下見mix函數(shù)),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規(guī)定: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;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末熙掺,一起剝皮案震驚了整個濱河市谤碳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溢豆,老刑警劉巖蜒简,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漩仙,居然都是意外死亡搓茬,警方通過查閱死者的電腦和手機犹赖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卷仑,“玉大人峻村,你說我怎么就攤上這事∥” “怎么了粘昨?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窜锯。 經(jīng)常有香客問我张肾,道長,這世上最難降的妖魔是什么锚扎? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任吞瞪,我火速辦了婚禮,結果婚禮上驾孔,老公的妹妹穿的比我還像新娘芍秆。我一直安慰自己,他們只是感情好翠勉,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布妖啥。 她就那樣靜靜地躺著,像睡著了一般眉菱。 火紅的嫁衣襯著肌膚如雪迹栓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天俭缓,我揣著相機與錄音克伊,去河邊找鬼。 笑死华坦,一個胖子當著我的面吹牛愿吹,可吹牛的內容都是我干的。 我是一名探鬼主播惜姐,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼犁跪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歹袁?” 一聲冷哼從身側響起坷衍,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎条舔,沒想到半個月后枫耳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡孟抗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年迁杨,在試婚紗的時候發(fā)現(xiàn)自己被綠了钻心。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡铅协,死狀恐怖捷沸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情狐史,我是刑警寧澤痒给,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站预皇,受9級特大地震影響侈玄,放射性物質發(fā)生泄漏。R本人自食惡果不足惜吟温,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一序仙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲁豪,春花似錦潘悼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至糙申,卻和暖如春宾添,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柜裸。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工缕陕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疙挺。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓扛邑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铐然。 傳聞我的和親對象是個殘疾皇子蔬崩,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,238評論 0 4
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,988評論 3 119
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中自点,引用類型是一種數(shù)據(jù)結構沪袭,用于將數(shù)...
    霜天曉閱讀 1,066評論 0 1
  • 《六祖壇經(jīng)》 (三十三) 原文: 世人若修道冈绊,一切盡不妨。 常自見己過埠啃,與道即相當死宣。 (三十四) 原文: 色類自有...
    岳曉晴閱讀 2,611評論 0 2
  • 朔風吹雨打垂簾,濕了小紅箋碴开。詩留筆底毅该,詞書紙上,思在眉前潦牛。 梧桐苑冷人獨立眶掌,向晚卻憑欄。何方雁影巴碗?何時歸信朴爬?何處青衫?
    莫愁Jessie閱讀 241評論 4 6