这道题yaozhaoguilv
题目描述:
有两个向量 v1 = (x1, x2, x3, ..., xn),v2 = (y1, y2, y3, ..., yn)。允许任意交换 v1 和 v2 的分量顺序,试计算 v1 和 v2 的内积 x1y1 + x2y2 + ... + xn *yn 的最小值。(1 <= n <= 800,-1000 <= xi <= 1000, -1000 <= yi <= 1000)
输入描述:
第一行输入一个正整数 n,表示每个向量中的分量数目。
第二行输入向量 v1 的 n 个整数分量,每个分量之间用一个空格分隔。
第三行输入向量 v2 的 n 个整数分量,每个分量之间用一个空格分隔。
输出描述:
一个整数,占一行,两个向量乘积的最小值。
样例输入:
3
1 3 -5
-2 4 1
样例输出:
-25
思想:一个从小到大排列,一个从大到小排列
乘积最小。
1 #include2 using namespace std; 3 int main(){ 4 int n,i,j; 5 while(cin>>n){ 6 long v1[n]; 7 long v2[n]; 8 long sum=0,p,q; 9 for(i=0;i >v1[i];11 }12 for(i=0;i >v2[i];14 }15 for(i=0;i v1[j+1]){18 p=v1[j];19 v1[j]=v1[j+1];20 v1[j+1]=p;21 }22 if(v2[j]