Вы можете сделать это, отслеживая, если вы встретите другой элемент с тем же значением, что и ваш текущий макс.Если вы это сделаете, установите флаг «галстук».Всякий раз, когда вы найдете новое максимальное значение, снимите «флажок связи», как показано ниже:
int max = matrix[0][0], max_i = 0, max_j = 0, tie = 0;
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
if(matrix[i][j] == max) {
tie = 1;
}
else if(matrix[i][j] > max) {
max = matrix[i][j];
tie = 0;
max_i = i;
max_j = j;
}
}
}
Затем вы можете вернуть -1, если tie == 1
.
Изменить, чтобы добавить: Обратите внимание, чтос текущим кодом вы инициализируете int max = matrix[0][0]
, и первый проверяемый элемент также matrix[0][0]
.Таким образом, если matrix[0][0]
ваш максимальный элемент, вы ошибочно обнаружите связь.Чтобы предотвратить это, если вы знаете, что матрица никогда не будет содержать значение ниже некоторого значения, вы можете инициализировать max
значением, меньшим этого значения.Например, если вы можете гарантировать, что матрица будет содержать только неотрицательные целые числа, вы можете инициализировать int max = -1
.