MAGCARI

Segi Tiga

Jan 7th, 2023
1,161
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. /*
  2.     Task    : _example
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 08 January 2023 [10:44]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. char a[260];
  10. int dp[260][260][3];
  11. int res[3][3] = {2,1,0,2,1,1,1,2,1};
  12. bool recur(int l,int r,int target){
  13.     if(l == r)                  return (a[l] - '0' == target);
  14.     if(dp[l][r][target] != -1)  return dp[l][r][target];
  15.     int mn = 1e9;
  16.     for(int k=l;k<r;k++){
  17.         for(int i=0;i<=2;i++){
  18.             for(int j=0;j<=2;j++){
  19.                 if(res[i][j] != target) continue;
  20.                 if(recur(l,k,i) && recur(k+1,r,j))
  21.                     return dp[l][r][target] = 1;
  22.             }
  23.         }
  24.     }
  25.     return dp[l][r][target] = 0;
  26. }
  27. int main(){
  28.     int q=20;
  29.     while(q--){
  30.         int n;
  31.         scanf("%d %s",&n,a+1);
  32.         memset(dp,-1,sizeof dp);
  33.         if(recur(1,n,0))    printf("yes\n");
  34.         else                printf("no\n");
  35.     }
  36.     return 0;
  37. }
Advertisement
Comments
Add Comment
Please, Sign In to add comment