其他分享
首页 > 其他分享> > 武汉理工大学新生赛L题:美少女的预言

武汉理工大学新生赛L题:美少女的预言

作者:互联网

武汉理工大学新生赛L题:美少女的预言

牛客链接

题意

分别输入两行单词,从第二行的单词中顺次选n个单词组成第一行,输出选取方法总数;

思路: 

用动态规划记录各个单词目前的选取可能数,用前缀和将到每个单词时的选取可能数与此单词相同的单词的数目加在一起,以便遇到下种符合条件的单词时用;

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string s[15];
long long int sum[15][10010];
long long int dp[15][10010];
long long int mod = 1919810;
int ans;
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		cin >> s[i];
	}
	for (int i = 1; i <= m; i++)
	{
		string t;
		cin >> t;
		for (int j = 1; j <= n; j++)
		{
			sum[j][i] = sum[j][i - 1];
			if (t == s[j])
			{
				if (j == 1)
					dp[j][i] = 1;
				dp[j][i] = (dp[j][i] + sum[j - 1][i-1]) % mod;
				sum[j][i] = (sum[j][i - 1] + dp[j][i]) % mod;
			}
		}
		ans = (ans + dp[n][i])%mod;
	}
	cout << ans % mod << endl;
}

 

标签:美少女,15,int,long,单词,武汉理工大学,include,预言
来源: https://blog.csdn.net/qq_62371734/article/details/121593811