此代码的实验结果和时间复杂度是什么呀,求解答呀

void Compress(int P[], int n, int S[], int L[])
{
S[0] = 0;
for (int i=1; i<=n; i++)
{
int bMaxLen = ceil(log(P[i]+1.0)/log(2.0));
S[i] = S[i-1] + bMaxLen;
L[i] = 1;
for (int j=2; j<=i&&j<=256; j++)
{
int bLen = ceil(log(P[i-j+1]+1.0)/log(2.0));
if (bLen > bMaxLen)
{
bMaxLen = bLen;
}
int sTmp = S[i-j] + bMaxLen*j;
if (S[i] > sTmp)
{
S[i] = sTmp;
L[i] = j;
}
}
S[i] += 11;
}
}
void Traceback(int C[], int n, int L[])
{
int j = 1;
while (n>0)
{
C[j] = L[n];
n -= L[n];
j++;
}
}

int main()
{
int P[14] = {0,10,12,15,255,1,2,1,1,2,2,15,35,30};
int S[14] = {0};
int L[14] = {0};
int C[14] = {0};
Compress(P, 13, S, L);
cout << "压缩后的总长度为:" << S[13] << endl;
Traceback(C, 13, L);
cout << "从前往后分段的长度为:";
for (int i=1; i<=13; i++)
{
if (C[14-i] != 0)
{
cout << C[14-i] << " ";
}
}
}