2.一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;
{3,6}{2,4,3} m=2
{3,3}{2,4}{6} m=3 所以m的最大值为3
m的值不可能超过sum(a)/max(ai)。从sum(a)/max(ai)到1开始试,同时m得是sum(a)的因子。
再转成01背包问题。包容量为sum(a)/m,每个物品价值等于其体积,求包可装最大价值的方案。
特别地,如果sum(a)是素数,而数组内存在不等的两个数,则m只能为1。