单词接龙 DFS 洛谷P1019

主要是字符串拼接处理比较麻烦(下见mix函数),DFS还是比较简单的

鉴定

读题有坑 注意max_初始化

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

#include 
#include 
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;
    for(int i=0; i<=n-1; i++)
        cin>>str[i];
    char a;
    cin>>a;
    for(int i=0; i

你可能感兴趣的:(单词接龙 DFS 洛谷P1019)