请选择 进入手机版 | 继续访问电脑版
点击联系客服
客服QQ:509006671 客服微信:mengfeiseo

广州老站长门户

 找回密码
 立即注册
查看: 197|回复: 35

[PTA]实验7-2-8找到鞍点(20分)

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-1-21 12:12:11 | 显示全部楼层 |阅读模式
Ps:刚开始学习数组的时候更头疼的话题,现在请访问3358www.sina.com/

门户网站

矩阵元素的“鞍点”表示该位置的元素值在该行中最大,在该列中最小。

这个问题要求编写一个求给定N次方阵鞍点的程序。

实验7-2-8 找鞍点 (20分)

输入第一行后,将提供正整数n(1n6)。接下来的n行每行用空格分隔n个整数。

输入格式:

输出以“下标列下标”(下标从0开始)的形式在一行中输出鞍点的位置。如果没有鞍点,则输出“无”。题目保证给定矩阵最多有一个鞍点。

输出格式:

4

1 7 4 1

4 8 3 6

1 6 1 2

0 7 8 9

输入样例1:

2 1

输出样例1:

2

1 7

4 1

输入样例2:

NONE

输出样例2:

以此输入为例。

1 7 4 1

4 8 3 6

1 6 1 2

0 7 8 9

首先遍历第一行,找到最大的7,然后遍历7所在的列。76,遍历鞍点第二行,找到最大的8行,遍历到有8的列,87遍历鞍点第三行。最后找到了第三行第二列的6。

代码:
operty">#include
int main()
{
        int n,a[7][7];scanf("%d",&n);
        for(int i=0;in;i++)for(int j=0;jn;j++)scanf("%d",&a[j]);
        for(int i=0;in;i++)
        {       
                int max_j=0,flag=0;
                for(int j=0;jn;j++)
                if(a[j]>=a[max_j]) max_j=j;
                for(int k=0;kn;k++)
                if(a[max_j]>a[k][max_j]) {flag=1;break;}
                if(!flag)        {printf("%d %d",i,max_j);   return 0;}
        }
        printf("NONE");return 0;
}

解法2
多开两个数组存每行最大和每列最小.
最后如果匹配上就输出,没匹配上就NONE;
code:

#include
#include
int a[7][7],maxx[7],minn[7];//分别存每一行最大以及每一列最小
int main()
{
        int n;scanf("%d",&n);
        for(int i=0;in;i++)
                for(int j=0;jn;j++)
                        scanf("%d",&a[j]);
                       
        memset(minn,99, sizeof(minn));//这一步很关键(不可省略,要让初始化的minn足够大才能存入最小值)
       
        for(int i=0;in;i++){
                for(int j=0;jn;j++)
                        if(maxxa[j])
                                maxx=a[j];//每一行的最大值
                for(int j=0;jn;j++)
                        if(minn>a[j])
                                minn=a[j];//每一列的最小值
        }
        for(int i=0;in;i++)//开始配对,如果配对成功输出并且结束
                for(int j=0;jn;j++)
                        if(minn==maxx[j]){
                                printf("%d %d",j,i);
                                return 0;
                        }
        printf("NONE");
}

实验7-2-5 判断上三角矩阵
code:

#include
int a[11][11];
int main()
{       
        int k;scanf("%d",&k);
        while(k--)
        {
                int n;scanf("%d",&n);
                for(int i=0;in;i++)
                        for(int j=0;jn;j++)
                                scanf("%d",&a[j]);
                for(int i=1;in;i++)
                        for(int j=0;ji;j++)
                                if(a[j]!=0)
                                {
                                        printf("NO\n");
                                        goto end;        
                                }
                printf("YES\n");
                end:    ;//因为不想写标记,就直接使用goto了
        }
}
回复

使用道具 举报

0

主题

378

帖子

224

积分

中级会员

Rank: 3Rank: 3

积分
224
发表于 2021-1-21 12:12:16 | 显示全部楼层
支持一下
回复

使用道具 举报

0

主题

344

帖子

192

积分

注册会员

Rank: 2

积分
192
发表于 2021-1-21 12:34:01 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

0

主题

376

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 2021-1-21 12:54:41 | 显示全部楼层
帮你顶下哈!!
回复

使用道具 举报

1

主题

359

帖子

154

积分

注册会员

Rank: 2

积分
154
发表于 2021-1-21 13:14:53 | 显示全部楼层
前排支持下
回复

使用道具 举报

0

主题

360

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2021-1-21 13:40:30 | 显示全部楼层
没看完~~~~~~ 先顶,好同志
回复

使用道具 举报

0

主题

381

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2021-1-21 14:03:02 | 显示全部楼层
真是 收益 匪浅
回复

使用道具 举报

1

主题

380

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2021-1-21 14:25:57 | 显示全部楼层
沙发!沙发!
回复

使用道具 举报

1

主题

349

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2021-1-21 14:50:21 | 显示全部楼层
帮你顶下哈!!
回复

使用道具 举报

1

主题

395

帖子

183

积分

注册会员

Rank: 2

积分
183
发表于 2021-1-21 15:14:13 | 显示全部楼层
LZ说的很不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|广州@IT精英团

GMT+8, 2021-3-4 14:37 , Processed in 0.095314 second(s), 40 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表