• 蓝桥杯_算法训练_最小乘积(基本型)


    问题描述
      给两组数,各n个。
      请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。
      例如两组数分别为:1 3  -5和-2 4 1

      那么对应乘积取和的最小值应为:
      (-5) * 4 + 3 * (-2) + 1 * 1 = -25
    输入格式
      第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
      n<=8,T<=1000
    输出格式
      一个数表示答案。
    样例输入
    2
    3
    1 3 -5
    -2 4 1
    5
    1 2 3 4 5
    1 0 1 0 1

    样例输出

    -25

    6
    思路:将两行数组一个升序一个降序,对应相乘。得到的就是最后的结果。
    代码还是比较简单的,如下
     1 #include<iostream>
     2 using namespace std;
     3 void sort(int a[],int n)//降序 
     4 {
     5     for(int i = 0; i < n; i++)
     6     {
     7         for(int j = 1; j < n-i; j++)
     8         {
     9             if(a[j-1]>a[j])
    10             {
    11                 int temp = a[j-1];
    12                 a[j-1] = a[j];
    13                 a[j] = temp;
    14             }
    15         }
    16     }
    17 }
    18 int main()
    19 {
    20     int num;//组数 
    21     int n;//每行n个数
    22     int a[100]={0};//第一行 
    23     int b[100]={0};//第二行 
    24     long result = 0;//结果 
    25     cin>>num;
    26     for(int i = 0; i < num; i++)
    27     {
    28         cin>>n;
    29         result = 0;
    30         /*输入两行数据*/
    31         for(int j = 0; j < n; j++)
    32         {
    33             cin>>a[j];
    34         }
    35         for(int j = 0; j < n; j++)
    36         {
    37             cin>>b[j];
    38         }
    39         /*将两行数据进行排序。一个升序,一个降序*/
    40         sort(a,n);
    41         sort(b,n); 
    42         for(int j = 0; j < n; j++)
    43         {
    44             result += a[j]*b[n-j-1];
    45         }
    46         cout<<result<<endl;
    47     } 
    48     return 0;
    49 } 
    
    

    起初自己在输出result的时候没有输出换行符,结果就错了。提醒自己以后注意。

    网上很多代码似乎很简单,我的排序可能并不是最简单的,但是也是常用的,对付这个题还是绰绰有余。

     
  • 相关阅读:
    PSP总结报告
    第十三周例行报告
    对团队成员公开感谢
    附加作业 软件工程原则的应用实例分析
    第十二周例行报告
    第十一周例行报告
    第十周例行报告
    第八周例行报告
    第七周例行报告
    第六周例行报告
  • 原文地址:https://www.cnblogs.com/allein-STR/p/7368134.html
Copyright © 2020-2023  润新知