मैं निम्नलिखित समस्या को हल करने की कोशिश कर रहा हूँ: http://www.spoj.pl/problems/TRIP/टीएलई एसपीओजे सबमिशन को रोकने के लिए मैं इस एल्गोरिदम को कैसे सुधार सकता हूं?
मैं एक समाधान C++ में डी पी (गतिशील प्रोग्रामिंग) का उपयोग करते हुए (कोड के नीचे तैनात) लिखा था। लेकिन मुझे टीएलई मिलती है (समय सीमा समाप्त हो गई)। मैं अपना कोड कैसे अनुकूलित कर सकता हूं?
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
string a,b;
vector<string> v;
int dp[85][85];
void filldp()
{
for(int i = 0; i <= a.length(); i++)
dp[i][0] = 0;
for(int i = 0; i <= b.length(); i++)
dp[0][i] = 0;
for(int i = 1; i <= a.length(); i++)
for(int j = 1; j<= b.length(); j++)
if(a[i-1] == b[j-1])
dp[i][j] = dp[i-1][j-1] + 1;
else
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
vector<string> fillv(int i, int j)
{
vector<string> returnset;
if(i == 0 || j == 0)
{ returnset.push_back("");
return returnset;
}
if(a[i-1] == b[j-1])
{
vector<string> set1 = fillv(i-1,j-1);
for(int k = 0; k < set1.size(); k++)
{
returnset.push_back(set1[k] + a[i-1]);
}
return returnset;
}
else
{
if(dp[i][j-1] >= dp[i-1][j])
{
vector<string> set1 = fillv(i,j-1);
returnset.insert(returnset.end(), set1.begin(), set1.end());
}
if(dp[i-1][j] >= dp[i][j-1])
{
vector<string> set2 = fillv(i-1,j);
returnset.insert(returnset.end(), set2.begin(), set2.end());
}
return returnset;
}
}
void output()
{
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for(int i = 0; i < v.size(); i++)
cout << v[i] << endl;
cout << endl;
}
int main()
{
int T;
cin >> T;
while(T--)
{
memset(dp,-1,sizeof(dp));
v.clear();
cin >> a >> b;
filldp();
v = fillv(a.length(), b.length());
output();
}
return 0;
}
मेरे यहाँ अनुमान डेटा संरचनाओं जो बचा जा सकता है की चारों ओर गुजर का एक बहुत है कि वहाँ है, लेकिन मैं वास्तव में कैसे को समझ नहीं सकता है।
टीएलई क्या है? तीन-अक्षर उत्थान? यदि आपको किसी विशेष उप-संस्कृति के शब्दकोष से परिचित होने के लिए उत्तरदाताओं की आवश्यकता नहीं है तो आपको अधिक/बेहतर उत्तर मिलेंगे। – RBarryYoung