您的位置:首页 > 其它

关于蓝桥OJ算法训练之最小乘积(基本型)

2016-03-11 21:31 316 查看


对于此题,我的思路是十字交叉法,即最大的乘上最小的,最小的乘上最大的,然后求和得出结果。当然,在这一步必须建立在已经将所输入的数字排好序的基础上。

提交OJ也是100分。

#include<stdio.h>
#define T 1009
void queue(int b[],int m)
{
int i , j  ,q;
for(i = 0 ; i < m ; i ++)
for(j = 0 ; j < m - i - 1; j ++)
{
if (b[j] > b[j + 1])

q = b[j+1] , b[j+1] = b[j],b[j] = q;
}
}
int main()
{
int N ;
scanf("%d",&N);
int temp_N = N ;
while(temp_N--){
int n , i , j ;
scanf("%d",&n);
int a[2][T];
for(j = 0 ; j < 2 ; j ++)
for(i = 0 ; i < n ; i ++)
scanf("%d",&a[j][i]);
for(j = 0 ; j < 2 ; j ++)
queue(a[j],n);
long long sum = 0 ;
for(i = 0 , j = n - 1 ; i < n && j > -1 ; i ++ , j --)
sum += a[0][i] * a[1][j];
printf("%d",sum);
printf("\n");
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: