cpython3


私信TA

用户名:smartZhou

访问量:71602

签 名:

等  级
排  名 36
经  验 12929
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

TA的其他文章

解题思路:

本题利用两个数组分别存储两组数据。我使用的是vector动态数组。

要使得所有配对元素差的绝对值之和最大。

可以将第一个数组中元素升序(或降序),第二个数组中元素降序(或升序)。

如题目引例中n=4时,

两组数据2 5 6 3 和   1 4 67     变换后  6 5 3 2  和 1 4 6 7

那么绝对值之差最大就是|6-1|+|5-4|+|3-6|+|2-7|

1546103110702949.png
之所以我使用vector容器来存储两组数据主要是由于操作方便,分别用push_back(data)将数据存入vector容器中。然后可以利用#include <algorithm>中的sort函数自动给两个容器排序,省去了人工排序的麻烦。

对于绝对值,主要使用#include <math.h>中的abs()函数。

注意事项:

升序 :

sort(vec.begin(),vec.end());

降序:

sort(vec.rbegin(),vec.rend());

参考代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
	int n,data,sum=0;
	cin>>n;
	vector<int> vec1,vec2;   //定义两个vector容器
	for(int i=0; i<n; i++)
	{
		cin>>data;
		vec1.push_back(data); //插入数据
	}
	for(int i=0; i<n; i++)
	{
		cin>>data;
		vec2.push_back(data); //插入数据
	}
	sort(vec1.begin(),vec1.end());   //升序
	sort(vec2.rbegin(),vec2.rend()); //逆序 
	for(int i=0; i<n; i++)
	{
		sum+=abs(vec1[i]-vec2[i]); //两数之差的绝对值
	}
	cout<<sum<<endl;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[1000],b[1000],i,j,flag,n,temp,sum=0 ;
    
    scanf ("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
    for(i=1;i<n;i++)
    {
        flag=0;
        for(j=n-1;j>=i;j--)
        {
            if(a[j]>a[j-1])
            {
                temp=a[j];
                a[j]=a[j-1];
                a[j-1]=temp;
                flag=1;
            }
            
           
        }
        if(flag==0)
        {
            break;
        }
    }
    for(i=
2019-02-15 15:00:48
  • «
  • 1
  • »