省略
省略
C++に変換後のコードはこちら
char A[2002], B[2002];
int As, Bs, Ar[2002], Br[2002];
int dp[2002][2002];
int solve(int x, int y){
int k, res = int_inf;
if(dp[x][y] >= 0) return dp[x][y];
if(x-1 >= 0 && Ar[x-1]) res <?= solve(x-1, y);
if(y-1 >= 0 && Br[y-1]) res <?= solve(x, y-1);
if(x-1 >= 0) res <?= solve(x-1, y) + 1;
if(y-1 >= 0) res <?= solve(x, y-1) + 1;
if(x-1 >= 0 && y-1 >= 0){
k = if[A[x-1] == B[y-1], 0, 1];
res <?= solve(x-1, y-1) + k;
if(Ar[x-1]==1) res <?= solve(x, y-1) + k;
if(Br[y-1]==1) res <?= solve(x-1, y) + k;
}
return dp[x][y] = res;
}
{
int i, k, res;
rd(A@As, B@Bs);
k = 0;
rep(i,As){
A[k++] = A[i];
if(i+1 < As && A[i+1] == '*') Ar[k-1] = 1, i++, continue;
if(i+1 < As && A[i+1] == '?') Ar[k-1] = 2, i++, continue;
}
As = k;
k = 0;
rep(i,Bs){
B[k++] = B[i];
if(i+1 < Bs && B[i+1] == '*') Br[k-1] = 1, i++, continue;
if(i+1 < Bs && B[i+1] == '?') Br[k-1] = 2, i++, continue;
}
Bs = k;
rep(i,As+1) rep(j,Bs+1) dp[i][j] = -1;
dp[0][0] = 0;
res = solve(As, Bs);
wt(res);
}
Current time: 2024年04月20日23時00分07秒
Last modified: 2019年09月01日01時06分03秒 (by laycrs)
Tags: Competitive_Programming_Incomplete yukicoder
トップページに戻る
Logged in as: unknown user (not login)