下列程序用dp的方式完成了这个任务,请完善程序
#include <bits/stdc++.h> using namespace std; int main() { vector<string> prefix; string p,str; while (true) { cin >> p; if (_____(1)______) break; prefix.push_back(p); } cin >> str; int len = (int)str.length(); vector<bool> dp(len + 1, false); ______(2)_______; for (int i = 0; i < len; i++) { if (dp[i]) { for (int j = 0; j < prefix.size(); j++) { bool isMatched = true; for (int k = 0; k < prefix[j].length(); k++) { if (______(3)______) { isMatched = false; break; } } if (isMatched) dp[______(4)______] = true; } } } for (int i = len; i >= 0; i--) { if (____(5)______) { cout << i << endl; return 0; } } return 0; }