c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

c语言编程求一个矩阵中的马鞍点

admin 2023-06-13编程经验
什么是马鞍点?马鞍点,也称极小值点,是指矩阵中的一个元素,它在该行中是最小的,但在该列中是最大的。在横纵坐标上,这个点就像马鞍一样,所以得名“马鞍点”。在矩阵上,马鞍点是非常重要的,因为它可以代表在该行上具有最小成本的供应商或该列上具有最大收益的需求商。如何找到

什么是马鞍点?

马鞍点,也称极小值点,是指矩阵中的一个元素,它在该行中是最小的,但在该列中是最大的。在横纵坐标上,这个点就像马鞍一样,所以得名“马鞍点”。在矩阵上,马鞍点是非常重要的,因为它可以代表在该行上具有最小成本的供应商或该列上具有最大收益的需求商。

如何找到矩阵中的马鞍点?

要找到矩阵中的马鞍点,需要在每一行和每一列中找到最小和最大值。如果存在一个元素,它既是该行最小值又是该列最大值,那么这个元素就是马鞍点。

下面是寻找马鞍点的基本步骤:

  1. 遍历数组的每一行。
  2. 找到该行中的最小值。
  3. 确认最小值在该行中的列数。
  4. 在该列中找到最大值。
  5. 如果最大值是该行中的最小值,则找到了一个马鞍点。
  6. 如果没有找到,则转到下一行重复以上步骤。

使用C语言实现找到矩阵中的马鞍点

下面是使用C语言实现找到矩阵中的马鞍点的代码示例:

int main() {
  int arr[3][3] = {{3, 4, 5}, {6, 2, 9}, {8, 7, 1}};
  int row, col;
  for (int i = 0; i < 3; i++) { //遍历每一行
    int min = arr[i][0]; //初始化该行最小值为第一个元素
    for (int j = 1; j < 3; j++) { //找到该行最小值
      if (arr[i][j] < min) {
        min = arr[i][j];
        col = j; //记录最小值所在列数
      }
    }
    int max = arr[0][col]; //初始化该列最大值为第一个元素
    for (int k = 1; k < 3; k++) { //找到该列最大值
      if (arr[k][col] > max) {
        max = arr[k][col];
        row = k; //记录最大值所在行数
      }
    }
    if (min == max) { //找到了一个马鞍点
      printf("The saddle point is %d at row %d and column %d.\n", min, row, col);
      return 0; //结束程序
    }
  }
  printf("There is no saddle point.\n"); //没有找到马鞍点
  return 0;
}