1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; char a[35],b[35]; LL dfs(int aL, int aR, int bL, int bR) { if(a[aL]!=b[bR]) return 0; if(aL>=aR) return 1; if(a[aL+1]==b[bR-1]) return 2*dfs(aL+1,aR,bL,bR-1); int p;for(int i=bL;i<=bR-1;i++)if(a[aL+1]==b[i]){p=i;break;} int LL=p-bL+1;//左孩子树有多少个点 return dfs(aL+1,aL+1+LL-1,bL,p)* dfs(aL+1+LL-1+1,aR,p+1,bR-1); } int main() { scanf("%s%s",a+1,b+1); int len=strlen(a+1); LL ans=dfs(1,len,1,len); printf("%lld\n",ans); return 0; }
- 1
信息
- ID
- 399
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 216
- 已通过
- 48
- 上传者