矩陣中的「鞍點」:該位置元素在所在行最大、所在列最小。若存在則輸出值及坐標,否則提示不存在。
if (flag = 0) 永真,應為 if (flag == 0);if (min < a[k][maxj]) 應為 if (max > a[k][maxj]),即行最大值是否大於該列其他元素;a[j][k] 而非 a[maxi][maxj]。for (i = 0; i < 3; i++) {
max = a[i][0]; maxj = 0;
for (j = 1; j < 3; j++) // 找行最大值及列號
if (a[i][j] > max) { max = a[i][j]; maxj = j; }
flag = 0;
for (k = 0; k < 3; k++) // 檢查該列是否為最小
if (max > a[k][maxj]) { flag = 1; break; }
if (flag == 0) { // 找到鞍點
printf("鞍點:%d,位置(%d,%d)\n", max, i+1, maxj+1);
return 0;
}
}
printf("不存在鞍點\n");
預計算每行最大值及其列索引、每列最小值及其行索引,再做集合交集,代碼更清晰且易於擴展至 N×M 矩陣。
printf("Row %d max=%d at col %d\n", i, max, maxj);;flag 變化;