Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task : _example
- Author : Phumipat C. [MAGCARI]
- Language: C++
- Created : 08 January 2023 [10:44]
- */
- #include<bits/stdc++.h>
- using namespace std;
- char a[260];
- int dp[260][260][3];
- int res[3][3] = {2,1,0,2,1,1,1,2,1};
- bool recur(int l,int r,int target){
- if(l == r) return (a[l] - '0' == target);
- if(dp[l][r][target] != -1) return dp[l][r][target];
- int mn = 1e9;
- for(int k=l;k<r;k++){
- for(int i=0;i<=2;i++){
- for(int j=0;j<=2;j++){
- if(res[i][j] != target) continue;
- if(recur(l,k,i) && recur(k+1,r,j))
- return dp[l][r][target] = 1;
- }
- }
- }
- return dp[l][r][target] = 0;
- }
- int main(){
- int q=20;
- while(q--){
- int n;
- scanf("%d %s",&n,a+1);
- memset(dp,-1,sizeof dp);
- if(recur(1,n,0)) printf("yes\n");
- else printf("no\n");
- }
- return 0;
- }
Advertisement