码迷,mamicode.com
首页 > 其他好文 > 详细

最小乘积(基本型)

时间:2014-05-26 01:03:15      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   c   code   tar   

问题描述
  给两组数,各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
 
 
bubuko.com,布布扣
#include"stdio.h"

void swap(int *a,int *b){
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

void maxSort(int a[],int n){
    int i,j;
    for(i=0;i<n;i++)
        for(j=i;j<n;j++){
            int temp;
            if(a[i]<a[j])
                swap(&a[i],&a[j]);
        }
}

void minSort(int a[],int n){
    int i,j;
    for(i=0;i<n;i++)
        for(j=i;j<n;j++){
            if(a[i]>a[j])
                swap(&a[i],&a[j]);
        }
}

int main()
{
    int T;
    int i,j;
    int n;
    int sum[1000];
    scanf("%d",&T);

    for(i=0;i<T;i++)
    {
        sum[i]=0;
        scanf("%d",&n);
        int a[2][10];
        for(j=0;j<n;j++)
            scanf("%d",&a[0][j]);
        for(j=0;j<n;j++)
            scanf("%d",&a[1][j]);
        maxSort(a[0],n);
        minSort(a[1],n);

        for(j=0;j<n;j++)
            sum[i]+=(a[0][j]*a[1][j]);
        
    }
    for(i=0;i<T;i++)
            printf("%d\n",sum[i]);
    return 0;
}
View Code

 

 

最小乘积(基本型),布布扣,bubuko.com

最小乘积(基本型)

标签:style   class   blog   c   code   tar   

原文地址:http://www.cnblogs.com/lgy123/p/3749950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!