将一个n元素的数组平均分为m分,是每组和相等,求最大m
来源:互联网 发布:网络推广的综合方案 编辑:程序博客网 时间:2024/03/28 21:52
网上流行的一道题目,题目如下。最终利用穷取法来递归解决的。
一个整数数组,长度为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
using System;using System.Collections.Generic;using System.IO;namespace ConsoleApp{ class RunClass { public static void Main() { int[] arr = new int[] { 3, 5, 2, 4, 1, 6, 3 }; int sum = 0; foreach (int t in arr) sum += t; for (int m = arr.Length; m > 0; m--) { int[] aux = new int[arr.Length];//to instore the groupId of each value of arr if (sum % m != 0) continue; bool success = BruteTest(arr, m, aux, sum/m,sum / m, 1); if (success)//print the result { Console.WriteLine("m = {0}", m); foreach (int value in arr) Console.Write(" " + value); Console.WriteLine(); foreach (int groupId in aux) Console.Write(" " + groupId); Console.WriteLine(); } } } private static bool BruteTest(int[] arr, int m, int[] aux,int groupSum ,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 < arr.Length; i++) { if (aux[i] != 0) continue; aux[i] = groupId; if (BruteTest(arr, m, aux,groupSum, goal - arr[i], groupId) == true) return true; aux[i] = 0; } return false; } }}
- 将一个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份,使得各分的和相等
- 面试题系列-整数数组长度为n,分为m份使各份的和相等,求最大的m
- 【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 每日一道算法题:一个整数数组,长度为n,将其分为m份,使各份的和相等,求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
- 三层从理论到实践
- Web 应用程序项目与网站项目
- 解决Android日志输出过长的问题
- 小技巧 SQL execution loop
- zend framework 重定向方法(render, forward, redirect)总结
- 将一个n元素的数组平均分为m分,是每组和相等,求最大m
- 史蒂夫·乔布斯(简介)
- C++ 值传递、指针传递、引用传递详解
- 移植thttpd Web服务器
- 交易网站的架构的一点研究心得
- Zend Framework 第九节数据库操作学习总结
- sicily--1509. Rails
- POJ 2699 枚举+最大流
- 基于hadoop和hbase的youtube简单模拟4