求两个整数数组乘积最小值
生活随笔
收集整理的這篇文章主要介紹了
求两个整数数组乘积最小值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸入:
三行: 第一行:n,表示數組的個數 第二行:數組a各個元素的值 第三行:數組b各個元素的值輸出:
式子:a[0]*b[0]+a[1]*b[1]+...a[n-1]*b[n-1];的最小值 其中數組a中元素順序可以調整 eg: 3 1 1 3 10 20 30 輸出80Solution:
#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的最大值相乘
總結
以上是生活随笔為你收集整理的求两个整数数组乘积最小值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 颐和园旺季全价门票和优惠门票
- 下一篇: QImage与Mat之间的相互转换