一个整数数组,长度为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
2014-03-19 15:46
676 查看
public class max { static int testmax(int[] a){ int sum=0; int maxnum = 0; int[] aux = new int[a.length]; for(int i=0;i<a.length;i++){ sum+=a[i]; } for(int m=2;m<=a.length;m++){ for(int i=0;i<aux.length;i++){ aux[i] = 0; } if(sum%m!=0) continue; else{ if(TestShare(a,sum,sum/m,aux,m,sum/m,1)){ maxnum = m; } } } return maxnum; } private static boolean TestShare(int[] a, int sum, int sa,int[] aux, int m,int s, int gid) { if(s==0){ gid++; s=sa;//s变为0时,说明一遍的查找已经结束,现在是进行第二遍,所以要进行重新的初始化。 if(gid==m+1){ return true; } } for(int i=0;i<aux.length;i++){ if(aux[i]==0&&a[i]<=sa){ aux[i]=gid; if(TestShare(a, sum,sa, aux, m, s-a[i], gid)){ return true; } aux[i]=0; } } return false; } public static void main(String[] args) { int[] test = {3,2,4,3,6}; int num = testmax(test); System.out.println(num); } }
相关文章推荐
- 一个整数数组,长度为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
- 一个整数组,长度为 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
- 一个整数组,长度为 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}
- 【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 每日一道算法题:一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值。
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值。
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 【编程题目】一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值★★ (自己没有做出来!!)
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m.(下)
- 一个整数数组,长度为n,将其分为m份,使得各分的和相等