输出一直是0?求大佬帮忙看看
查看原帖
输出一直是0?求大佬帮忙看看
854939
Echordy楼主2023/2/25 16:42
#include <bits/stdc++.h>
using namespace std;
vector<string>word;
int k,n;
unsigned long maxw = 0;
string maxword;
int vis[100005];
void link(string q)
{
    for(int i = 1; i <= word.size() && !vis[i]; i++){       //遍历还有的词
        for(unsigned long k = q.size()-1; k > q.size()-word[i].size(); k--){      //前面的词
            int flag = 0;
            for(unsigned long j = 0,u = k; u < q.size(); j++,u++){
                if(word[i][j] == q[u])  flag = 1;       //能接起来
                else {flag = 0;     break;}
            }
            if(flag){
                vis[i] = 1;
                string tmp = q;
                tmp.erase(k,q.size());
                tmp += word[i];
                if(maxw < tmp.size())   maxw = tmp.size();
                link(tmp);
                vis[i] = 0;
            }
        }
    }
}
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++){
        string q;      cin >> q;
        word.push_back(q);
    }
    char begin;   cin >> begin;
    for(int i = 1; i <= n; i++)
        if(word[i][0] == begin){
            vis[i] = 1;
            link(word[i]);
            vis[i] = 0;
        }
    cout << maxw <<endl;
}

2023/2/25 16:42
加载中...