C语言 找鞍点

Posted

tags:

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

各位大侠,看看下面这个程序到底哪出问题了,告诉一下,我感激不尽!!
#include<stdio.h>
void main()

int i,j,m,n,p,number=0;
int a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
printf("%-4d",a[i][j]);
printf("\n);
for(i=0;i<4;i++)
m=0;
for(j=0;j<4;j++)
if(a[i][m]<=a[i][j]) m=j,p=i;
n=0;
for(i=0;i<4;i++)
if(a[n][m]>=a[i][m]) n=i;
if(p==n)
printf("第%d行鞍点是a[%d][%d]=%d",p,p,m,a[p][m]);
number++;

if(number==0)
printf("没有鞍点\n");

就一处错误,看下面的注释:

#include<stdio.h>
void main()

int i,j,m,n,p,number=0;
int a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
printf("%-4d",a[i][j]);
printf("\n); /*少个 "("\n") */
for(i=0;i<4;i++)
m=0;
for(j=0;j<4;j++)
if(a[i][m]<=a[i][j]) m=j,p=i;
n=0;
for(i=0;i<4;i++)
if(a[n][m]>=a[i][m]) n=i;
if(p==n)
printf("第%d行鞍点是a[%d][%d]=%d",p,p,m,a[p][m]);
number++;

if(number==0)
printf("没有鞍点\n");
参考技术A #include<iostream>
#include<stdio.h>
using namespace std;
#define M 4
void An()

int i,j,t,m,n,k,flag=0,count=0,a[M][M];
for(i=0;i<M;i++)

cout<<"输入第"<<i+1<<"行数字:"<<endl;
for(j=0;j<M;j++)
cin>>a[i][j];
cout<<endl;

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

for(j=0;j<M;j++)
printf("%4d",a[i][j]);
cout<<endl;

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

t=a[i][0];
m=i;
n=0;
for(j=1;j<M;j++)
if(a[i][j]>t)

t=a[i][j];
m=i;
n=j;

for(k=0;k<M;k++)
if(t>a[k][n])
flag=1;
if(flag==0)

count++;
cout<<"第"<<count<<"个鞍点是:a["<<m<<"]["<<n<<"]="<<t<<endl;

else
cout<<"第"<<i+1<<"行无鞍点!"<<endl;
flag=0;


void main()

An();
参考技术B printf("\n);少打一个引号

python练习题4.22找鞍点

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

#!/usr/bin/python
# -*- coding: utf-8 -*-

n = int(input())
l = list()
for i in range(0,n):
    s = list(map(int,input().split(" ")))
    l.append(s)

key = False
maxl = list()
for i in range(0,n):
    maxl = list()
    for k in range(0,n):
        maxl.append(int(l[i][k]))
        #求行最大值
    max2 = max(maxl)
    for j in range(0,n):
        minl = list()
        for k in range(0,n):
            minl.append(int(l[k][j]))
            #求列最小值
        min2 = min(minl)
        if max2 == min2:
            print(i,j)
            key = True

if not key:
    print("NONE")

这个程序怎么说呢,不难,重在细节。

1、遍历第一行的数据,求最大值。

2、遍历第一列最小值,然后比较,不满足,则遍历第二列。

3、列遍历完了,然后遍历第二行的最大值,再去遍历列。


读书和健身总有一个在路上

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

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

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

c语言编程 求鞍点

二维数组找鞍点

C语言的鞍点怎么求

PTA——找鞍点