【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
来源:互联网 发布:国家专利数据库 编辑:程序博客网 时间:2024/05/17 08:51
第45题
一个整数数组,长度为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
既然是各份的和相等,首先让我们想到的是,先对这个数组求和,然后去求解一个分组的个数问题。
然后 定义变量 i=length(数组长度),i>0,i--,去寻找满足的最大的 i
import java.util.ArrayList;import java.util.List;public class Algorithm45_0 {static int getMax(int a[]){int sum=0;List<Integer> myList=new ArrayList<Integer>();for(int aa:a){sum+=aa;myList.add(aa);}for(int i=a.length;i>0;i--){if(sum%i==0){if(ifExsits(myList,sum/i,sum/i)){return i;}}}return 1;}static boolean ifExsits(List<Integer> rootList,int num,int orgNum){if(rootList.size()==0&&num==orgNum){return true;}boolean flag=false;for(int i=0;i<rootList.size();i++){List<Integer> subList=new ArrayList<Integer>();for(int j=0;j<rootList.size();j++){if(j!=i){subList.add(rootList.get(j));}}if(rootList.get(i)==num){flag=flag||ifExsits(subList, orgNum, orgNum);}else if(rootList.get(i)<num){flag=flag||ifExsits(subList, num-rootList.get(i), orgNum);}}return flag;}public static void main(String[] args) {// TODO Auto-generated method stubint a[]={1,2,3,6,6};int b=getMax(a);System.err.println(b);}}
- 【微软谷歌面试100题--【45】一个整数数组,长度为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份,使得各分的和相等
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为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
- 一个整数数组,长度为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}
- 整数数组,长度为n,分为m份。求m最大值
- ResponsiveSlides.js 使用
- C++的坑真的多吗?
- windows + visual studio 2010 配置SVN
- Bridge模式
- 程序员练级之路
- 【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- java序列化深度克隆
- nyoj 6 喷水装置(一)
- php上传限制设置
- 数论小模版解题报告
- C++写的带有头结点循环单链表
- Spring学习总结(三)Spring容器中的Bean
- jdk安装
- DIV+CSS网页布局对SEO的四大影响(转自www.jqueryba.com)