数组试题---交换两数组元素使和差最小
2015-04-16 15:46
148 查看
/* *有数组a 和b ,都是无序的 *请交换a,b的某些元素,让它们的 *总和之差最小 */ #include<stdio.h> #define SIZE 3 int sumb (int m[], int n) /*计算数组元素之和*/ { int i; int sum = 0; for (i = 0; i < n; i++) sum += m[i]; return sum; } main () { int min; int tmp; int i; int j; int this; int a[SIZE] = { 1, 7, 3 }; int b[SIZE] = { 10, 15, 4 }; min = sumb (a, SIZE) - sumb (b, SIZE); min = min > 0 ? min : (-1) * min;//初始化min,此时min为两个数组总和之差 for (i = 0; i < SIZE; i++) for (j = 0; j < SIZE; j++) { /*这里是先互相交换一个元素进行求总和相减,注意,其实两个数组并没有改变,当且仅当 *这里求得的差比min小时才进行真正的交换 */ this = sumb (a, SIZE) - sumb (b, SIZE) + 2 * (b[j] - a[i]); this = this >= 0 ? this : (-1) * this; if (this < min)//如果this不小于min的话就不进行交换 { min = this; if (min == 0)//如果找到差值为0的组合,则提前退出 break; tmp = a[i]; a[i] = b[j]; b[j] = tmp; } } printf ("Min=%d\n", min); }
相关文章推荐
- java编程:两个无序数组a和b,交换a,b中的元素,使得[序列a元素的和]与[序列b元素的和]之间的差最小。
- 交换两个长度均为n的无序数组的元素,使两数组元素的和之差的绝对值最小
- 32.(数组、规划)2个数组交换对应元素使二者差最小
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 《数组-规划》 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小
- 华为面试题(8分钟写出代码) 有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
- 华为面试题:通过交换元素,使两个数组的元素和之差最小
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 输出一个十个数数组的最小值及它的下标,并把它和第一个元素交换位置
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 有两个数组a,b,大小都为n,;通过交换a,b中的元素,使sum(a)-sum(b)最小。
- 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个数组,最大的元素与第一个元素交换,最小的元素与最后一个元素交换
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。错误写法以及正确写法。
- 交换两个数组的元素使之总和的差值最小
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组