Я решал какой-то вопрос об отслеживании на онлайн-платформе. Вот мой код
vector<vector<int> > dp; // STATEMENT 1
//vector<vector<int> > dp(1000, vector<int>(1000,0)); // STATEMENT 2
void initialize_dp(string stg)
{
int n = stg.length();
for(int i = 0; i < n; i++)
{
dp.push_back(vector<int>(n,0)); // STATEMENT 3
}
for(int i = 0 ;i <n ;i++)
dp[i][i] = 1;
for(int len = 2; len <= n; len++)
{
for(int i = 0, j = i+len-1; i < n && j < n; i++, j++)
{
if(stg[i] == stg[j])
{
if(len == 2)
dp[i][j] = 1;
else
dp[i][j] = dp[i+1][j-1];
}
else
dp[i][j] = 0;
}
}
}
void solve(string &A, int n, int k, vector<vector<string> >&result, vector<string> temp)
{
if(k == n)
{
result.push_back(temp);
return;
}
int i,j;
i = k;
for(int j = k; j < n; j++)
{
if(dp[i][j] == 1)
{
temp.push_back(A.substr(i, j-i+1));
solve(A, n, j+1, result, temp);
temp.pop_back();
}
}
}
vector<vector<string> > startFunction(string A) {
int n = A.length();
initialize_dp(A);
vector<vector<string> > result;
vector<string> temp;
solve(A, n,0, result, temp);
return result;
}
В коде я объявил глобально vector<vector<int> >
, когда объявил, что с помощью STATEMENT2 он работает нормально. Но когда я объявил это, используя STATEMENT1 и внутреннюю функцию initialize_dp (string stg) Я инициализирую этот глобальный вектор в STATEMENT3 , тогда он показывает исключение времени выполнения при отправке. Однако на моей локальной машине он работает нормально с входами, которые не удалось на онлайн-платформе. Любая идея, что могло бы сделать это.