一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
来源:互联网 发布:李逵捕鱼倍数算法 编辑:程序博客网 时间:2024/04/28 14:58
一个整数数组,长度为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。
#include <stdio.h>bool function_core(int *a, int n, int m, int groupsum, int *group, int goal, int groupid){if(goal < 0)return false;if(goal == 0){groupid++;goal = groupsum;if(groupid == m+1)return true;}for(int i=0;i<n;i++){if(group[i])continue;group[i] = groupid;if(function_core(a,n,m,groupsum,group,goal-a[i],groupid))return true;group[i] = 0;}return false;}int function(int *a, int n){int sum = 0,i;int *group = new int[n];for(i=0;i<n;i++){sum += a[i];}for(int m=n; m>=2; m--){if(sum%m != 0)continue;for(i=0;i<n;i++)group[i] = 0;group[0] = 1;if(function_core(a,n,m,sum/m,group,sum/m-a[0],1))//只需判断数组第一个元素分组情况,如果第一个元素无法分组,说明这个m是无效的{printf("分组情况:\n");for(i=0;i<n;i++)printf("%d\t",group[i]);printf("\n");delete [] group;group = NULL;return m;}}return 1;}int main(){int a[] = {2, 6, 4, 1, 3, 9, 7, 5, 8, 10};int n = sizeof(a)/sizeof(int);printf("数组为:\n");for(int i=0;i<n;i++)printf("%d\t",a[i]);printf("\n");printf("最大分组数为:%d\n",function(a,n));return 0;}
- 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的最大值。
- 【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 每日一道算法题:一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为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
- 算法习题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最大值
- ext4_ext_map_block函数解析
- 面试学习之道:英文自我介绍
- openssh无需验证登陆
- PsCreateSystemThread创建系统线程
- boost::ref
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 自制的七个C,总结的太好了
- 颜色直方图实现彩色图象分割
- wikioi p1174 靶形数独
- POJ 2255 重构二叉树
- Android之Adapter用法总结 http://www.cnblogs.com/devinzhang/archive/2012/01/20/2328334.html
- 88E1111与千兆网口连接
- xen网络后端驱动分析(发送篇)
- iOS上的socket通信