这似乎是一个简单的需求,但是谷歌并不是我的好朋友,因为“partition”在数据库和文件系统空间中得分很高。
我需要枚举一个包含N个值(N是常数)的数组的所有分区,将其分成k个子数组。子数组只是起始索引和结束索引。原始数组的整体顺序将被保留。
例如,当N=4且k=2时:
[ | a b c d ] (0, 4)
[ a | b c d ] (1, 3)
[ a b | c d ] (2, 2)
[ a b c | d ] (3, 1)
[ a b c d | ] (4, 0)
当k=3时:
[ | | a b c d ] (0, 0, 4)
[ | a | b c d ] (0, 1, 3)
:
[ a | b | c d ] (1, 1, 2)
[ a | b c | d ] (1, 2, 1)
:
[ a b c d | | ] (4, 0, 0)
我相信这不是一个原创问题(不,这不是作业),但我想为每个k <= N解决它,如果后续的计算(随着k的增长)能够利用之前的结果,那就太好了。
如果您有相关链接,请分享。