21xrx.com
2024-09-19 09:51:16 Thursday
登录
文章检索 我的文章 写文章
C++实现鞍点算法
2023-06-30 20:27:58 深夜i     --     --
C++ algorithm saddle point

鞍点算法是一种常见的、高效的数据处理算法。这种算法通常被用来寻找矩阵中的鞍点,也就是矩阵中既是其所在行的最大值,又是其所在列的最小值的位置。

在C++中,实现鞍点算法的方式有很多。下面就是一个简单的实现示例:


#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cmath>

using namespace std;

int main()

{

  int n,m,i,j,min,max,temp,row,column,flag=1;

  cin>>n>>m;

  int a[100][100]={0};   //定义二维数组并初始化为0

  for(i=0;i<n;i++)

  {

    for(j=0;j<m;j++)

    {

      cin>>a[i][j];

    }

  }

  for(i=0;i<n;i++)     //寻找鞍点

  {

    min=a[i][0];

    column=0;

    for(j=0;j<m;j++)

    {

      if(a[i][j]<min)

      {

        min=a[i][j];

        column=j;

      }

    }

    max=a[0][column];

    row=0;

    for(j=0;j<n;j++)

    {

      if(a[j][column]>max)

      {

        max=a[j][column];

        row=j;

      }

    }

    if(max==a[i][column])

    {

      cout<<i<<" "<<column<<" "<<a[i][column];

      flag=0;

    }

  }

  if(flag)

    cout<<"No"<<endl;  //当鞍点不存在时的提醒

  return 0;

}

以上的代码,首先定义了一个二维数组,用于存储输入的矩阵。接着,使用两个for循环遍历矩阵,将数据存入数组中。

然后,进行了第二个循环,用于查找鞍点。首先在每一行中查找最小值和对应的列号,随后在该列中查找最大值和对应行号。如果最大值恰好是该元素,那么就输出该元素所在的行号、列号和数值,否则继续查找。

最后,如果鞍点不存在,就输出"No"。

此外,程序还支持用户可自行输入需要处理的矩阵,使用scanf和printf方法可使程序更加简洁高效。

  
  
下一篇: C++命名规范

评论区

{{item['qq_nickname']}}
()
回复
回复