划分数组,求最小差值
来源:互联网 发布:劈叉的影响身高吗 知乎 编辑:程序博客网 时间:2024/06/07 09:02
划分数组 将数组划分成两个子数组,使得两个子数组的差值(绝对值)最小,求这个差值例子:输入:632 34 2 7 10 43输出:4
#include <stdio.h>#include <stdlib.h>#include <string.h>int cmp_int(const void *e1, const void *e2) { return *((int *)e1) - *((int *)e2);}int main() { int n = 0; scanf("%d\n", &n); int *a; a = new int[n]; memset(a, 0, sizeof(int)*n); for (int i=0; i<n; ++i) { scanf("%d", &a[i]); } qsort(a, n, sizeof(int), cmp_int); int sum1 = 0; int sum2 = 0; for (int i=0; i<n; ++i) sum1 += a[i]; int k=-1; int d = 0; int min_d = abs(sum1-sum2); do { k = -1; for (int i=0; i<n; ++i) { d = abs(sum1 - sum2 - a[i] - a[i]); if (d < min_d) { min_d = d; k = i; } } if (k != -1) { sum1 -= a[k]; sum2 += a[k]; a[k] = 0; } } while (k!=-1); delete [] a; printf("%d\n", min_d);}
此题可以使用分治法,但是我不想写出这个代码,以后自己在补充!!!
0 0
- 划分数组,求最小差值
- 数组划分 求划分结果的差值
- 和差值最小子数组划分
- 和差值最小的数组划分问题
- 最小差值的划分
- dfs 求差值最小
- 将一个数组划分为和差值最小的子数组
- 求数组元素最大差值
- 求两个有序数组中,各个元素的c差值最小
- 算法--微软面试题:求一个整数数组元素间最小差值
- 算法--06年华为面试:求两个数组的最小差值(Java实现)
- RMQ算法求最大最小差值
- 华为机试练习---求最小差值
- 求2个人的身高差值最小
- 利用差值求栈的最小元素
- 最小差值
- 交换两数组元素使两数组和差值最小
- 求上下界 差值 最小 一类问题 hdu1598 && poj3189
- ubuntu下php环境搭建
- C++ 中的const用法整理
- R语言中的RC对象系统
- 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件
- Python配置第三方库Theano的曲折之路
- 划分数组,求最小差值
- android sdk无法更新的解决方法
- 程序员应该具有的品德与修为
- eclipse里报:An internal error occurred during: "Building workspace". Java heap space)
- Oracle修改字符集
- iOS - app的国际化
- 纠正《Effective C++(第三版)》侯捷译 中文版中,第31条款中原文“最后,不论Handle classes或Interface classes,一旦脱离inline函数都无法...”的误译
- 欢迎使用CSDN-markdown编辑器
- Android || IOS录制mp3语音文件方法