#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include 
#include 
#define ll long long;
using namespace std;
bool comp(const string &s1,const string &s2)
{
    return s1.length()<s2.length();
}
vectornewStr;
void mincut(const string& str, const set& dict,int s,string sstr)
{
    if(s==str.length())
    {
        newStr.push_back(sstr);
    }
    for(auto it=dict.begin();it!=dict.end();it++)
    {
        string t=*it;
        int i;
        for(i=0;i<t.length();++i)
            if(t[i]!=str[i+s])break;
        if(i==t.length()&&s+i<=str.length())
        {
            if(s) t=" "+t;
            mincut(str,dict,s+i,sstr+t);
        }
    }
}
int main(int argc, const char * argv[])
{
    string strS;
    string dictStr;
    int nDict;
    set dict;
    cin>>strS;
    cin>>nDict;
    for (int i = 0; i < nDict; i++)
    {
        cin>>dictStr;
        dict.insert(dictStr);
    }
    mincut(strS, dict,0,string());
    if(newStr.size())
    {
        sort(newStr.begin(),newStr.end(),comp);
        cout<<newStr[0];
    }
    else
    {
        cout<<"n/a";
    }
    return 0;
}
因为没有看到最后如果不匹配就输出"n/a",所以提交的代码里没有最后的条件判断,通过率75%,可以用一个string代替vector,减小空间复杂度