从头开始搜TLE,从尾开始搜,AC。。。 上网看了一下,都说DP。。不懂。。看来真的要看DP才行,也许我写的就是变相DP,是我不懂DP而已。。 #include <iostream> #include <string> #include <cstring> using namespace std; string A, B, C; bool _find(int n, int m, int cur) { if(cur == -1) return true; if(n >= 0 && C[cur] == A[n] && _find(n - 1, m, cur - 1)) return true; if(m >= 0 && C[cur] == B[m] && _find(n, m - 1, cur - 1)) return true; return false; } int main() { int T; cin >> T; for(int j = 1; j <= T; j++) { cin >> A >> B >> C; cout << "Data set " << j << ": "; if(_find(A.size() - 1, B.size() - 1, C.size() - 1)) cout << "yes" << endl; else cout << "no" << endl; } return 0; }