ans

zhaocong 2022-04-03 8:52:01 60 返回题目

本题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;

}

{{ vote && vote.total.up }}

共 2 条回复

062_yuhaoyi

好了

062_yuhaoyi
#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;
}