文章

15

粉丝

39

获赞

137

访问

5.7k

头像
通俗解释
P1283 上海交通大学机试题
发布于2025年1月22日 10:57
阅读数 283

//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;
}

 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发