Equal Sentences(简单dp)

http://acm.hdu.edu.cn/showproblem.php?pid=6806

 

思路:

先介绍一下f[i]的含义:f[i]表示前i个单词构成的句子有多少个不同的几乎相等的句子数

这里给大家一个图

 

Equal Sentences(简单dp)_第1张图片

 code:

#include
#include
#include
#define INF 0x3f3f3f3f
#include 

using namespace std;

typedef long long ll;
//int ans[1100];
const int N=1e5+10;
const int mod=1e9+7;
ll f[N];
string s[N];
int main()
{
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		for(int i=1;i<=n;i++) cin>>s[i];
		f[0]=f[1]=1;
		for(int i=2;i<=n;i++){
			if(s[i]==s[i-1]) f[i]=f[i-1];
			else f[i]=(f[i-1]+f[i-2])%mod;
		}
		cout<

 

你可能感兴趣的:(dp)