#include <stdio.h>
#include <string.h>
int max (int x, int y) {return (x > y) ? x : y;}
int count;
int lps (char * seq, int i, int j)
{
count += 1;
if (i == j)
return 1;
if (seq[i] == seq[j] && i + 1 == j)
return 2;
if (seq[i] == seq[j])
return lps (seq, i + 1, j - 1) + 2;
return max (lps (seq, i, j - 1), lps(seq, i + 1, j));
}
int main ()
{
char seq [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int n = 1; n <= 26; n++)
{
count = 0;
printf ("n = %d: answer = %d", n
, lps
(seq
, 0, n
- 1)); printf (", count = %d\n", count
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KIAppbnQgbWF4IChpbnQgeCwgaW50IHkpIHtyZXR1cm4gKHggPiB5KSA/IHggOiB5O30KCmludCBjb3VudDsKIAppbnQgbHBzIChjaGFyICogc2VxLCBpbnQgaSwgaW50IGopCnsKICAgY291bnQgKz0gMTsKICAgaWYgKGkgPT0gaikKICAgICAgcmV0dXJuIDE7CiAgIGlmIChzZXFbaV0gPT0gc2VxW2pdICYmIGkgKyAxID09IGopCiAgICAgIHJldHVybiAyOwogICBpZiAoc2VxW2ldID09IHNlcVtqXSkKICAgICAgcmV0dXJuIGxwcyAoc2VxLCBpICsgMSwgaiAtIDEpICsgMjsKICAgcmV0dXJuIG1heCAobHBzIChzZXEsIGksIGogLSAxKSwgbHBzKHNlcSwgaSArIDEsIGopKTsKfQogCmludCBtYWluICgpCnsKICAgIGNoYXIgc2VxIFtdID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsKICAgIGZvciAoaW50IG4gPSAxOyBuIDw9IDI2OyBuKyspCiAgICB7CiAgICAgICBjb3VudCA9IDA7CiAgICAgICBwcmludGYgKCJuID0gJWQ6IGFuc3dlciA9ICVkIiwgbiwgbHBzIChzZXEsIDAsIG4gLSAxKSk7CiAgICAgICBwcmludGYgKCIsIGNvdW50ID0gJWRcbiIsIGNvdW50KTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==
n = 1: answer = 1, count = 1
n = 2: answer = 1, count = 3
n = 3: answer = 1, count = 7
n = 4: answer = 1, count = 15
n = 5: answer = 1, count = 31
n = 6: answer = 1, count = 63
n = 7: answer = 1, count = 127
n = 8: answer = 1, count = 255
n = 9: answer = 1, count = 511
n = 10: answer = 1, count = 1023
n = 11: answer = 1, count = 2047
n = 12: answer = 1, count = 4095
n = 13: answer = 1, count = 8191
n = 14: answer = 1, count = 16383
n = 15: answer = 1, count = 32767
n = 16: answer = 1, count = 65535
n = 17: answer = 1, count = 131071
n = 18: answer = 1, count = 262143
n = 19: answer = 1, count = 524287
n = 20: answer = 1, count = 1048575
n = 21: answer = 1, count = 2097151
n = 22: answer = 1, count = 4194303
n = 23: answer = 1, count = 8388607
n = 24: answer = 1, count = 16777215
n = 25: answer = 1, count = 33554431
n = 26: answer = 1, count = 67108863