求调
查看原帖
求调
575363
revolutionary_oier楼主2024/1/25 10:13
#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn=100+10;
const int mod=1e9+7;
int t,n;
char s[maxn];
int a[maxn];
int f[maxn][30];
inline void dp(){
	memset(f,0,sizeof(f));
	f[1][a[1]]=1;
	for(int i=2;i<=n;i++){
		if(i!=2){
			for(int j=1;j<=26;j++)f[i][a[i]]=(f[i][a[i]]+f[i-1][j])%mod;
		}
		for(int j=1;j<=26;j++){
			if(j==a[i])continue;
			for(int k=1;k<=26;k++){
				int u=j-a[i];
				if(k-u<1||k-u>26)continue;
				f[i][j]=(f[i-1][k]+f[i][j])%mod;
			}
		}
	}
	int ans=0;
	for(int i=1;i<=26;i++)ans=(ans+f[n][i])%mod;
	printf("%lld\n",ans);	
}
inline void input(){
	scanf("%lld",&t);
	while(t--){
		scanf("%s",s);
		n=strlen(s);
		for(int i=1;i<=n;i++)a[i]=s[i-1]-'a'+1;
		dp();
	}
}
signed main(){
	input();
	return 0;
}
2024/1/25 10:13
加载中...