删括号
思路
代码
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <vector>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const ll maxn = 1e6+10;
double eps = 1e-8;
bool f[111][111][111];
char s[111],t[111];
int main(){
scanf("%s %s",s+1,t+1);
f[0][0][0] = true;
int lens = strlen(s+1),lent = strlen(t+1);
for(int i = 0;i<lens;i++){
for(int j = 0;j<lent;j++){
for(int k = 0;k<=lens/2;k++){
if(f[i][j][k]){
char c1 = s[i+1],c2 = t[j+1];
if(c1 == '(' && c2 == '(') {
if(!k) f[i+1][j+1][k] = true;
f[i+1][j][k+1] = true;
}
if(c1 == ')' && c2 == ')') {
if(!k) f[i+1][j+1][k] = true;
if(k) f[i+1][j][k-1] = true;
}
if(c1 == '(' && c2 == ')') f[i+1][j][k+1] = true;
if(c1 == ')' && c2 == '(' && k) f[i+1][j][k-1] = true;
}
}
}
}
if(f[lens][lent][0]) puts("Possible");
else puts("Impossible");
return 0;
}
京公网安备 11010502036488号