c语言编程 求鞍点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程 求鞍点相关的知识,希望对你有一定的参考价值。

程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入 1 个正整数 n(1≤n≤6)和n 阶方阵a中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a最多有1个鞍点)。

#include "stdio.h"
int main( )
int ri,repeat;
int flag,i,j,k,row,col,n,a[6][6];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
scanf("%d",&n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
/*---------*/
if(flag)
printf("a[%d][%d]=%d\n", row, col,a[row][col]);
else
printf("NO\n");



根据以上已给出的代码完成编程

参考技术A #include "stdio.h"
int main( )
int ri,repeat;
int flag,i,j,k,row,col,n,a[6][6];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
scanf("%d",&n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
/*开始编程*/
for(int i=0;i<n;i++)

int rowmax=a[i][0];
for(j=0;j<n;j++)
if(rowmax<a[i][j])

rowmax=a[i][j];//得到行上最大的数字
row=i;
col=j;

for(j=0;j<n;j++)
if(rowmax>a[row][j]) //判断找到的行最大的数字是否小于所在列数字,如果不是,就跳出列循环,继续判断方阵的下一行
break;
else

continue;//判断找到的行最大的数字是否小于所在列数字,如果是,就继续下次循环

if(j==n)//判断列上是否最小,如果是,就设置flag,并跳出循环

flag=true;
break;


/*结束编程*/
if(flag)
printf("a[%d][%d]=%d\n", row, col,a[row][col]);
else
printf("NO\n");

本回答被提问者采纳

c语言查找二维数组的鞍点 新生求助大佬

对于给定的整数矩阵A[5,5],设计算法查找出所有的鞍点。
提示:鞍点的特点:列上最小,行上最大。

输入格式:
输入5行5列整数,同行数据间以空格为间隔。

输出格式:
在一行中以以下格式输出矩阵中的所有鞍点,每个鞍点的显示格式为:
[<鞍点的行坐标>,<鞍点的列坐标>,<鞍点的值>]

输入样例:
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 8
15 10 11 20 25
结尾无空行
输出样例:
[3,0,8][3,4,8]
结尾无空行

C语言查找二维数组的鞍点详细代码如图:

具体思路:

一、先把每行的最大值求出来×到数组;

二、依次遍历每行,如果其值等于最大值,再判断在列中是否最小即可。

三、输出结果。

参考技术A

#include <stdio.h>

int main()

int i,j,min,max,m=5,n=5,found=0;

  int a[5][5],h[5],l[5];

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

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

      scanf("%d",&a[i][j]);

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

  h[i]=a[i][0];

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

      if(a[i][j]>h[i])

        h[i]=a[i][j];

  //找出每行最大值

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

  l[j]=a[0][j];

    for(i=1; i<m; i++)

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

        l[j]=a[i][j];

  //找出每列最小值

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

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

      if(l[j]==h[i])

        printf("[%d,%d,%d]",i,j,a[i][j]);

         found=1;

       

  //进行比较,若行最小与列最大相等,则输出

  if(!found)printf("没有鞍点");

本回答被提问者采纳
参考技术B 开两个数组,一个数组存每一行的最大值,一个数组存每一列的最小值。先扫两遍矩阵把这两个数组计算出来,然后再扫一遍检查矩阵中每个元素是否同时等于其所处列的最小值与所处行的最大值,如果是就是鞍点,这样就行了吧。

以上是关于c语言编程 求鞍点的主要内容,如果未能解决你的问题,请参考以下文章

C语言 找鞍点

c语言查找二维数组的鞍点 新生求助大佬

c语言问题 找矩阵中的鞍点

C语言的鞍点怎么求

c语言:求一个矩阵鞍点。行上最小,列上最大的点。

C语言之基本算法32—鞍点