瞪了好久 没看出来有什么问题/kk
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const ll MOD=1e9+7;
const int N=510,M=10;
int n,k,r;
ll dp[N][N][M];
string s;
int main()
{
cin>>n>>k>>s;
s=" "+s;
for(int i=1;i<=n;i++)
{
for(int j=1;j+i-1<=n;j++)
{
r=j+i-1;
if(i<=k&&(dp[j][r-1][1]||i==1)&&(s[r]=='*'||s[r]=='?')) dp[j][r][1]=1;
if(i>=2)
{
if((s[j]=='('||s[j]=='?')&&(s[r]==')'||s[r]=='?')) dp[j][r][2]=(dp[j+1][r-1][1]+dp[j+1][r-1][3]+dp[j+1][r-1][4]+dp[j+1][r-1][5])%MOD;
for(int k=j;k<r;k++)
{
dp[j][r][3]=(dp[j][r][3]+dp[j][k][4]*dp[k+1][r][1]%MOD)%MOD;
dp[j][r][4]=(dp[j][r][4]+(dp[j][k][3]+dp[j][k][4])*dp[k+1][r][2]%MOD)%MOD;
dp[j][r][5]=(dp[j][r][5]+dp[j][k][6]*dp[k+1][r][1]%MOD)%MOD;
dp[j][r][6]=(dp[j][r][6]+(dp[j][k][5]+dp[j][k][6])*dp[k+1][r][2]%MOD)%MOD;
}
dp[j][r][4]=(dp[j][r][4]+dp[j][r][2])%MOD;
dp[j][r][5]=(dp[j][r][5]+dp[j][r][1])%MOD;
}
//printf("%d %d %d\n",j,r,dp[j][r][4]);
}
}
printf("%lld",dp[1][n][4]);
return 0;
}