题目
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6806
题意:两个单词能左右交换,求最多有多少个不同的字符串
思路
dp 但要注意:dp[0]=1、字母相等时的问题
代码
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int dp[100010];
string s[100010];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
for(int i=1;i<=n;i++){
dp[i]=0;
cin>>s[i];
}
dp[0]=1;dp[1]=1;
for(int i=2;i<=n;i++){
dp[i]=dp[i-1];
if(s[i]!=s[i-1]){
dp[i]=(dp[i]+dp[i-2])%mod;
}
}
cout<<dp[n]<<endl;
}
}