简要思路:
1、遍历整个数组,找出最大值;
2、根据找到的最大值将男n与女n去除掉(对应的是数组n行与n列置位零);
3、返回1,直到结束。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
int max = 0, max1 = 0,m = 0, n = 0,k = 0;
cin >> k;
int** p = (int**)malloc(k * sizeof(int*));
int** q = (int**)malloc(k * sizeof(int*));
for (int i = 0; i < k; i++) {
p[i] = (int*)malloc(k * sizeof(int));
q[i] = (int*)malloc(k * sizeof(int));
}
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
scanf("%d", &p[i][j]);
}
}
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
scanf("%d", &q[i][j]);
}
}
for (int count = 0; count < k;count++) {
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
if (p[i][j] * q[i][j] > max1) {
max1 = p[i][j] * q[i][j];
m = i;
n = j;
}
}
}
for (int i = 0; i < k; i++) {
p[m][i] = 0;
q[m][i] = 0;
p[i][n] = 0;
q[i][n] = 0;
}
max += max1;
max1 = 0;
}
cout << max;
}
小弟代码水平不高,希望有大佬给我代码提提意见~~~~~