交换两数组中的元素使得这两个数组的差最小
来源:互联网 发布:乔丹最后一个赛季数据 编辑:程序博客网 时间:2024/05/22 06:24
交换两数组中的元素使得这两个数组的差最小
a1=A-B
a2=(A-a[i]+b[j])-(B-b[j]=a[i])
=(A-B)-2*(a[i]-b[j])
=a1-2*(a[i]-b[j])
a[i]-b[j]~~(0,a1) min=a1/2;
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<string>using namespace std;void swap(float *A, int lenA, float *B, int lenB, float a1){float min_ = 10000;int k1 = -1;int k2 = -1;for (int i = 0; i < lenA;i++)for (int j = 0; j < lenB; j++){int sub = abs((A[i] - B[j])-a1*1.0/2);if (sub < min_){min_ = sub;k1 = i;k2 = j;}}int temp = A[k1];A[k1] = B[k2];B[k2] = temp;}float FinSum(float A[], int lenA, float B[], int lenB){float Subsum1 = 0;float Subsum2 = 0;for (int i = 0; i < lenA; i++){Subsum1 += A[i];}for (int i = 0; i < lenA; i++){Subsum2 += B[i];}float a1 = Subsum1 - Subsum2;return a1;}int main(){float A[] = { 4,5,6 };int len_a = 3;float B[] = { 1,2,3};int len_b = 3;float a1 = 1000000;float a2 = FinSum(A, len_a, B, len_b);while (a2 < a1){a1 = a2;swap(A, len_a, B, len_b, a2);a2 = FinSum(A, len_a, B, len_b);}return 0;}
阅读全文
0 0
- 交换两数组中的元素使得这两个数组的差最小
- 给定两个数组,交换它们的元素,使得两数组元素之和的差绝对值最小
- 交换两数组中的元素使得二者和差最小
- 重新组合两个数组,使得他们的元素差最小
- 数组中的数分为两组,使得两个组的和的差的绝对值最小
- 华为面试题:交换两个数组,使得数组的和的差最小
- 数组试题---交换两数组元素使和差最小
- java编程:两个无序数组a和b,交换a,b中的元素,使得[序列a元素的和]与[序列b元素的和]之间的差最小。
- 交换两个数组的元素,使两个数组和的差最小
- 通过交换两个数组的元素,使数组元素和之差最小
- 数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0<x<100,元素个数也是大于0, 小于100 。
- 交换两个数组使两个数组和的差最小
- 交换两个数组使两个数组和的差最小
- 交换两个数组使两个数组和的差最小
- 交换两个数组使两个数组和的差最小
- 交换两个数组使两个数组和的差最小
- 交换两个长度均为n的无序数组的元素,使两数组元素的和之差的绝对值最小
- 华为面试题:通过交换元素,使两个数组的元素和之差最小
- 如何让Div中的Table居中
- 什么是P问题、NP问题和NPC问题
- 域名知识
- 带有下拉选择控件的自定义对话框
- mysql查询数据准备
- 交换两数组中的元素使得这两个数组的差最小
- git撤消修改
- 第1章 绪论
- Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库
- Git详解之二:Git基础
- 这可能是2017最经典的Android面试题
- 如何解决MathType兼容Office 2016
- Ubuntu下OpenCV编程[1]-下载并安装测试OpenCV库
- 洛谷P3381【模板】最小费用最大流