100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 求两个整数数组乘积最小值

求两个整数数组乘积最小值

时间:2018-09-16 10:19:32

相关推荐

求两个整数数组乘积最小值

输入:

三行:第一行:n,表示数组的个数第二行:数组a各个元素的值第三行:数组b各个元素的值

输出:

式子:a[0]*b[0]+a[1]*b[1]+...a[n-1]*b[n-1];的最小值其中数组a中元素顺序可以调整eg:31 1 310 20 30输出80

Solution:

#include<stdio.h>#include<stdlib.h>int main() {int N;scanf("%d", &N);int *a = (int *)malloc(sizeof(int) *N);int *b = (int *)malloc(sizeof(int) *N);int *book1 = (int *)malloc(sizeof(int) *N);int *book2 = (int *)malloc(sizeof(int) *N);for (int i = 0; i < N; i++) {scanf("%d", &a[i]);book1[i] = 0;book2[i] = 0;}for (int i = 0; i < N; i++) {scanf("%d", &b[i]);}int min_of_a;int max_of_b;int result = 0;int count = 0;int temp;int label_a = 0;int label_b = 0;while (count < N) {for (; label_a < N; label_a++) {if (book1[label_a] == 0) {min_of_a = a[label_a];break;}}for (; label_b < N; label_b++) {if (book2[label_b] == 0) {max_of_b = b[label_b];break;}}for (int i = 0; i < N; i++) {if (min_of_a >=a[i] && book1[i] == 0) {min_of_a = a[i];temp = i;}}book1[temp] = 1;for (int i = 0; i < N; i++) {if (max_of_b <= b[i] && book2[i] == 0) {max_of_b = b[i];temp = i;}}book2[temp] = 1;result += min_of_a * max_of_b;count++;}printf("%d\n", result);free(a);free(b);free(book1);free(book2);return 0;}

思路:

用a的最小值与b的最大值相乘

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。