C语言练习——鞍点
来源:互联网 发布:程序员年龄大了没出路 编辑:程序博客网 时间:2024/04/27 20:14
C语言练习——鞍点
题目出自“中国大学MOOC”翁恺老师《程序设计入门——C语言》第七周编程练习第二题
以下为题目要求:
给定一个n*n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。
你的任务是找出A的鞍点。
输入格式:
输入的第1行是一个正整数n, (1<=n<=100),然后有n行,每一行有n个整数,同一行上两个整数之间有一个或多个空格。
输出格式:
对输入的矩阵,如果找到鞍点,就输出其下标。下标为两个数字,第一个数字是行号,第二个数字是列号,均从0开始计数。
如果找不到,就输出
NO
题目所给的数据保证了不会出现多个鞍点。
输入样例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
输出样例:
2 1
时间限制:500ms内存限制:32000kb
以下为博主给出的代码,仅供参考:
//寻找一个方形矩阵的鞍点(saddle point)#include <stdio.h>int main(){//读入一个数字,决定这个方形矩阵是几阶的int n;scanf("%d",&n);//定义n阶矩阵以及将要用到的变量int matrix[n][n];int i,j,temp,count,flag=0;//读入矩阵中的每一个数for(i=0; i<n; i++){for(j=0; j<n; j++){scanf("%d",&temp);matrix[i][j]=temp;}}//测试读入的数据是否正确/*{for(i=0; i<n; i++){printf("%d\t",i);for(j=0; j<n; j++){printf("%d\t",matrix[i][j]);}printf("\n");}}*///开始寻找鞍点for(i=0; i<n; i++){//找出每行中的最大的数字temp=matrix[i][0];//用temp与count标识出每行中最大的数字以及位置count=0;for(j=1; j<n; j++){if(temp<matrix[i][j]){temp=matrix[i][j];count=j;}}//测试一下,此行最大的数字,是否是其所在列的最小数字for(j=0;j<n;j++){if(matrix[j][count]<temp){flag++;//如果有数字小temp,flag就不为零}}if(flag==0){//测试flag值,如果为零,证明此数正是要找的鞍点printf("%d %d\n",i,count);break;}flag=0;}//如果没找到鞍数,循环终止,输出“NO”if(i==n){printf("NO");}return 0;}
思考:这一周学的是数组,没有以前的代码写起来那么容易了,调试了好几次才通过。而且有一点感触的是,注释很重要,如果不加注释,随便写代码,过后再看代码,不要说别人了,自己也看不懂啊。而且写注释,能让自己的思路更加清晰直观,代码出错调试起来也方便快捷。
0 0
- C语言练习——鞍点
- C语言之基本算法32—鞍点
- C语言找鞍点
- C语言----求“鞍点”
- C语言+鞍点
- C语言算法---求鞍点
- 鞍点-week7-C语言习题集
- C语言,二维数组 找鞍点
- C语言之鞍点的查找
- 二维数组的“鞍点”(C语言)
- C语言作业-7-2鞍点
- 用C语言实现计算鞍点
- ytu2019—鞍点计算
- C语言练习——念整数
- C语言练习——高精度小数
- C语言练习——完数
- 【C语言】找出一个二维数组的“鞍点”【原创技术】
- C语言 寻找输入二位数组中的鞍点
- Android 小功能的使用
- 4.微信小程序-B站:先把首页造出来
- 递归
- T语言与快速开发平台之天宇联Android开发手册
- 页面修改 路径无效
- C语言练习——鞍点
- iOS学习:AVFoundation 视频流处理
- APCAD三维开发平台简介
- Java基础学习总结(87)——坚持写Java等技术类博客的好处
- JAVA WEB程序中添加定时器
- VS c#软件在XP或WIN7下面运行提示错误
- oracle查看创建表的sql语句1,DESCRIBE命令使用方法如下:SQL>descri
- 自定义的Loading框:JHLoadingView
- 右键 - 添加Git Bash Here菜单