Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38623 黄子睿 【J】T3 C++ 通过 100 14 MS 408 KB 970 2025-10-18 13:47:13

Tests(51/51):


#include<bits/stdc++.h> using namespace std; int T,n; string x; bool dp[400][400]; int main(){ //freopen("judge.in","r",stdin); //freopen("judge.out","w",stdout); cin>>T; for(int i=1;i<=T;i++){ for(int j=0;j<400;j++){ for(int k=0;k<400;k++){ dp[j][k]=0; } } cin>>n; cin>>x; x=' '+x; for(int j=2;j<=n;j++){ if(x[j-1]==x[j]){ dp[j-1][j]=1; } } for(int j=3;j<=n;j++){ if(x[j-2]==x[j]){ dp[j-2][j]=1; } } for(int len=4;len<=n;len++){ for(int l=1;l+len-1<=n;l++){ int r=l+len-1; if(x[l]==x[r]){ dp[l][r]=dp[l+1][r-1] || dp[l+2][r-1] || dp[l+1][r-2]; for(int k=l+3;k<=r-3;k++){ if(dp[l+1][k-1]&&dp[k+1][r-1]) dp[l][r]=1; } } for(int k=l+1;k<r-1;k++){ if(dp[l][k]&&dp[k+1][r])dp[l][r]=1; } } } if(dp[1][n]){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } } //fclose(stdin); //fclose(stdout); return 0; }


测评信息: