Convert some Python code to C++

Neil Cerutti horpner at yahoo.com
Tue Nov 13 13:51:11 EST 2007


On 2007-11-13, kyosohma at gmail.com <kyosohma at gmail.com> wrote:
> On Nov 13, 9:28 am, meyousikm... at yahoo.com wrote:
>> I am working on an implementation of the Longest Common
>> Subsequence problem (as I understand it, this problem can be
>> used in spell checking type activities) and have used this
>> site to understand the problem and its solution:
>>
>> http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest...
>>
>> For those that understand algorithms and can talk Python, I
>> want to convert the Python code in the section "Reading out
>> all LCSs" into C++ code but I don't understand some of the
>> syntax.  Can anyone give me a hand?
>>
>> Here is the code from that section, but is probably of little
>> use without understanding the entire problem setup given at
>> the site above:
>>
>> def backTrackAll(C, X, Y, i, j):
>>     if i == 0 or j == 0:
>>         return set([""])
>>     elif X[i-1] == Y[j-1]:
>>         return set([Z + X[i-1] for Z in backTrackAll(C, X, Y, i-1,
>> j-1)])
>>     else:
>>         R = set()
>>         if C[i][j-1] >= C[i-1][j]:
>>             R.update(backTrackAll(C, X, Y, i, j-1))
>>         if C[i-1][j] >= C[i][j-1]:
>>             R.update(backTrackAll(C, X, Y, i-1, j))
>>         return R
>>
>> Thanks!
>
> You might try Shed Skin:
>
> http://sourceforge.net/projects/shedskin/
>
> It's been a while since I did C++. I would recommend going
> through a basic C++ tutorial. I'm pretty sure the equivalence
> operators are almost the same. You'll likely need to declare
> the types for the arguments passed into the function as well.
>
> I think lists are called arrays in C++. I don't know what the
> "set" equivalent is though.

It is called set, oddly enough. ;)

There's an overload of the set::insert function that takes a
couple of iterators that will serve for Python's update method.

-- 
Neil Cerutti



More information about the Python-list mailing list