不知道哪错了 求大佬指教QAQ
查看原帖
不知道哪错了 求大佬指教QAQ
185745
Harry_X楼主2020/10/22 18:37
#include<bits/stdc++.h>
using namespace std;
int p,k;
int dp[21][21];
int m,sum;
string a[7];
string s[20];
int f(string s,int k,int last)
{
	if(k==1)
	{
		string p="";
		int ans;
		for(int i=0;i<m;i++)
		{
			if(s.find(a[i])!=string::npos&&p.find(a[i])!=0)
			{
				ans++;
				p+=a[i];
			}
		}
		return ans;
	}
	for(int i=0;i<last;i++)
	{
		if(dp[i][k-1]==0)
		dp[i][k-1]=f(s.substr(0,i+1),k-1,i);
		dp[last][k]=f(s.substr(i+1,last-i),1,last-i)+dp[i][k-1];
	}
	return dp[last][k];
}
int main()      
{
	cin>>p>>k;
	for(int i=0;i<p;i++)
		cin>>s[i];
	cin>>m;
	for(int i=0;i<m;i++)
		cin>>a[i];
	for(int i=0;i<p;i++)
	{
		sum+=f(s[i],k,s[i].size()-1);
	}
	cout<<sum;
    return 0;
}
2020/10/22 18:37
加载中...