关于爆0这件事
查看原帖
关于爆0这件事
482623
一洛本谷通楼主2022/3/27 07:51
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
int t,n,m,ans;
int h1,t1,h2,t2,h3,t3;
char s[410],c[410],r[410];
bool check(char x[],char y[]){
	int x1=t2-h2,y1=t3-h3;
	if(x1!=y1) return 0;
	else{
		for(int i=1;i<=x1;i++)
			if(x[h2+i-1]!=y[h3+i-1])
				return 0;
		return 1;
	}
}
void dfs(int t){
	if(t==n+1){
		if(check(c,r)){
			ans++;
			ans%=mod;
		}
		return ;
	}
	if(s[h1]!='-') r[t3++]=s[h1++];
	else{
		t3--;dfs(t+1);t3++;
		h3++;dfs(t+1);h3--;
	}
}
int main(){
	//freopen("string.in","r",stdin);
	//freopen("string.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m;
		getchar();
		cin>>s>>c;
		t1=n,t2=m;
		dfs(1);
		cout<<ans%mod<<endl;
		ans=0;
	}
	return 0;
}

求大佬看看

2022/3/27 07:51
加载中...