if (min < A[i, j])
Почему меньше? Если минимум меньше какого-то значения, это нормально. Для поиска минимума нужно всё же (min > A[i, j])
int min = A[0, 0], min_j = -1;
...
if (min_j != 0) ;
Так же обратите внимание, что при некоторых условиях (сразу угадали минимальный элемент), min_j так и останется -1, что вполне удовлетворяет условию min_j != 0, но вызывает исключение. Более корректная проверка выглядит скорее
if (min_j > 0)
И, как уже сказали выше, точка с запятой совсем лишние.