输入
3
aaa
aab
bba
输出
15
输入
5
ya
na
mi
an
naa
输出
325
备注:
对于样例:
缩写a的方案有 2 种:aaa、aab。
缩写b的方案有 1 种:bba。
缩写aa的方案有 2 种:aaa aab、aab aaa。
缩写ab的方案有 2 种:aaa bba、aab bba。
缩写ba的方案有 2 种:bba aaa、bba aab。
缩写aab的方案有 2 种:aaa aab bba、aab aaa bba。
缩写aba的方案有 2 种:aaa bba aab、aab bba aaa。
缩写baa的方案有 2 种:bba aaa aab、bba aab aaa。
共有 2+1+2+2+2+2+2+2=15 种方案
分析:分析题目可以知道是一个排列问题,用递归显然会超时,所以出现了这样一个写法
#include<bits/stdc++.h>
using namespace std;
#define int long long
int mod=1e9+7;
signed main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
string b;
cin>>b;
}
int sum=1,ans=0;
//实在是太妙了,一个人怎么可以如此聪明,我是想不到的
for(int i=n;i>=1;i--){
sum=(sum*i)%mod;//每一次要求的排列的值
ans+=sum%mod;//每个值相加
}
cout<<ans%mod;
}
int sum=1,ans=0;
for(int i=n;i>=1;i--){
sum=(sum*i)%mod;
ans+=sum%mod;
}
重点学习
标签:缩写,aaa,aab,int,sum,bba,2024,牛客,华为
From: https://blog.csdn.net/2401_89065428/article/details/144175020