Pythonの二次元配列から最も大きい値を取得する
最長部分共通問題を解いているときに
気になったので調べてみた。
最長共通部分列(Common Longest Subsequence)の問題を解いている最中にこの記事を読んでいて、あれ?これだと最長の共通部分が何文字分あるのか返せてないな、でも二次元配列ってどう返すんだっけ?
となったので調査。
ちなみにmax(dp)
やmax(max(dp))
では返せませんでした。
結論としてはここが参考になった。
大人しく従ったら上手く返せたのでメモがてら記事を書いておく。
max(list(map(lambda x: max(x), dp)))
これで返すか、
from itertools import chain
list(chain(*a))
max(chain(*a))
こう返すかの二択っぽい。
ちなみにつまづいていた最長部分共通問題はこれで、ソースコード(メモ化とDPを試した)はここ。
時間がある人はぜひ解いてみてください。
コメント
コメントを投稿