本题AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,dp[200];
char s[200];
string a[200],ss;
set words;
bool check(int l,int r){
string ss="";
for(int i=l;i<=r;i++) ss+=s[i];
return words.find(ss) != words.end();
}
int main(){
cin>>s+1;
int len=strlen(s+1);
cin>>n;
for(int i=1;i<=n;i++){
cin>>ss;
words.insert(ss);
}
for(int i=1;i<=len;i++) dp[i]=INT_MAX/3;
for(int i=1;i<=len;i++) for(int j=0;j<=i-1;j++) if(check(j+1,i)) dp[i]=min(dp[i],dp[j]+1);
cout<<dp[len];
return 0;
}
共 2 条回复
好了