#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,减小空间复杂度
点赞 评论

相关推荐

牛客网
牛客企业服务