文章
15
粉丝
39
获赞
137
访问
5.7k
//1283-Pre-Post
#include<bits/stdc++.h>
using namespace std;
int zh(int m,int n){
if(m==0) return 0;
int fenzi=1;
int fenmu=1;
for(int i=0;i<m;i++){
fenzi=fenzi*(n-i);
fenmu=fenmu*(i+1);
}
return fenzi/fenmu;
}
int main(){
int n;
string pre,post;
while(cin>>n){
if(n==0) break;
cin>>pre;
cin>>post;
int l=pre.length();
int c[l],num[l],pe;
for(int i=0;i<l;i++){
c[i]=post.find(pre[i]);
}
memset(num,0,sizeof(num));
for(int i=0;i<l;i++){
pe=-1; //注意pe这里初值要设成-1而不是0,因为c[i]最小为0而不是1
for(int j=i+1;j<l;j++){
if(c[j]<c[i] && c[j]>pe) {
num[i]++;
pe=c[j];
}
}
}
int ans=1;
for(int i=0;i<l;i++){
// cout<<num[i]<<endl;
// cout<<zh(num[i],n)<<endl;
if(zh(num[i],n)!=0) ans=ans*zh(num[i],n);
}
cout<<ans<<endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发