#include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <unordered_set> #include <stack> using namespace std; int main(){ int n = 0; cin >> n; string tab[n]; for(int i=0; i<n; ++i){ cin >> tab[i]; } for(int i=0; i<n; ++i){ for(int k=0; k<n; ++k){ string con = tab[i]+tab[k]; unordered_set<string> S; //cout << " <:> " << con << " <:> \n"; for(int q=0; q < con.length(); ++q){ for(int p=q+1; p <= con.length(); ++p){ string tmp = con.substr(q,p-q); string nStr = ""; //cout << " ::: " << tmp << " ::: \n"; bool check = true; int L=0; int P=0; for(int z = 0; z < tmp.length(); ++z){ if(tmp[z]=='L') L++; if(tmp[z]=='P') P++; if(L < P){ P--; }else{ nStr+=tmp[z]; if(L==P){ S.insert(nStr); } } } } } cout << S.size() << " "; } cout << "\n"; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <unordered_set> #include <stack> using namespace std; int main(){ int n = 0; cin >> n; string tab[n]; for(int i=0; i<n; ++i){ cin >> tab[i]; } for(int i=0; i<n; ++i){ for(int k=0; k<n; ++k){ string con = tab[i]+tab[k]; unordered_set<string> S; //cout << " <:> " << con << " <:> \n"; for(int q=0; q < con.length(); ++q){ for(int p=q+1; p <= con.length(); ++p){ string tmp = con.substr(q,p-q); string nStr = ""; //cout << " ::: " << tmp << " ::: \n"; bool check = true; int L=0; int P=0; for(int z = 0; z < tmp.length(); ++z){ if(tmp[z]=='L') L++; if(tmp[z]=='P') P++; if(L < P){ P--; }else{ nStr+=tmp[z]; if(L==P){ S.insert(nStr); } } } } } cout << S.size() << " "; } cout << "\n"; } return 0; } |